[2023.09.19] 개발자 교육 2일 차 : 강의-변수, 문서작성[구디 아카데미/김승수 강사님]

DaramGee·2023년 9월 19일
0

오늘 정리

인스턴스화란, 컴파일된 클래스를 호출하는 것이고, 이를 통해 재사용성, 이식성을 갖는다.

변수란, 기능을 하도록 여러 값이 들어가는 것이고, 선언위치와 값의 속성에 따라 여러 종류가 있다.(전역변수, 지역변수, 정적변수/int, double, boolean 등)

복습

  • 코딩이란? 약속에 따라 컴퓨터가 이해할 수 있는 언어로 문서를 작성하는 것
  • 약속이란? 클래스 선언, 메인메소드 선언, 선언부 작성(변수, 메소드)
  • 클래스란? 변수와 메소드로 구성되어 있음. {}
    • 변수는 저장소
    • 메소드는 기능, 배포, 실행, ()
  • 코딩을 실행하기 위해서는 JVM이라는 처리주체를 사용하여 컴파일을 해야 함
    • JVM은 bin, src 폴더로 구성됨.
  • 컴파일이란? 고급언어를 저급언어로 바꾸는 것, .java를 .class로 바꾸는 것
  • 인스턴스화(객체화)란?
    • 컴파일된 클래스를 호출하는 것, 전역변수를 호출할 수 있음.
    • 메소드와 변수를 모아 놓은 것에 불과한 클래스를 사용할 수 있도록 해당 클래스 타입의 객체명을 선언하고 값을 넣어줘서, 해당 클래스의 변수나 메소드를 사용 가능한 상태로 만드는 것

  • 프로젝트 복습
    • 작업공간 → 프로젝트 생성 → 패키지 생성 → 클래스 생성
(public) class 클래스명{
		변수선언
		메소드             //변수선언 -> 호출 -> 소유주는 클래스 -> 인스턴스화
}

사전 다운로드

자바 tip

  • 메인메소드
    • 다른표현
      • 메인스레드(가장 먼저 실행되기 -> 우선순위를 정할 수 있음)
      • 엔트리 포인트
      • 콜백함수(개발자가 호출하지 않아도 가장 먼저 실행)라고도 함.
    • 파이썬과의 가장 큰 차이점은 실행 순서를 정할 수 있다는 것
    • 메인메소드가 있어야 실행할 수 있고, 생략되면 실행되지 않음.
    • 메인메소드는 선언 시 static이 있음(기타 수정자) - 싱글톤(하나, 공유)
      • static이 있으면 컴파일을 하는 것에 제약이 있음.
  • 에러의 종류
    • 컴파일타임 에러(기초) : convention(약속)을 지키지 않았을 때 발생, 클래스 생성 x, 실행 x
    • 런타임 에러(중급) : 논리에 오류가 있어 실행 시 발생, exception →에러 해결은 재밌게 프론트엔드 언어부터 시작
  • 공부순서
    • 생각하기 → 말하기 → 코딩하기
  • 표준 약속
    • 클래스는 대문자로 시작
    • 그 외는 카멜형식으로 작성
  • 메소드
    • 메소드 선언(메소드 뒤에 {})
    • 메소드 호출(메소드 뒤에())
  • 단축키
    • ctrl + alt + 방향키(복붙)
    • alt + shtift +x & j

오전 강의

실습 정리

package com.step1;

public class Variable3 extends Object{
	//중급으로 가려면 타입을 결정할 수 있어야 하고, 갯수까지도 결정할 수 있어야 한다.
	public void account(int z, int y) { //파라미터 자리에 선언된 변수는 지변이고,선언만 되었고,
                                      //17번 라인 메소드가 호출될 때 값이 결정됨
		System.out.println("account 호출 성공");
		System.out.println(z); //1 - 
		System.out.println(y); //2 - call by value
	}
	//사용자 측 개발자가 임의의 메소드를 얼마든지 선언, 구현할 수 있음.
	//컴파일을 하는 언어는 컴파일 타임에 JVM이 문법체크를 함. -> JAVA는 다른 언어보다 안전, 일관성, 공정하다
	public static void main(String[] args) { 
		//insert here - 내가 정의한 메소드 account 호출하기
		//내 안에 정의된 메소드라 하더라도 static영역 안에서 non-static(스태틱이 없는) 메소드를 호출하려면 
		//반드시 인스턴스화 할 것(메인 메소드 앞에는 static이 있기 때문에)
		//주소번지.or인스턴스변수.해당메소드가 선언된 소유주.account(1,2);
		Variable3 v = new Variable3();
		v.account(1,2);
		v.account(1); //파라미터와 갯수가 다르면 JVM이 같은 메소드 이름이어도 다른 메소드로 인식한다.
		v.account("호출");//파라미터와 타입이 다르면 JVM이 같은 메소드 이름이어도 다른 메소드로 인식한다.
	}
}
  • 지역변수를 선언할 수 있는 위치는 메소드 안에서 하거나 파라미터 자리에 할 수 있음.
  • 파라미터 자리란 메소드 괄호 안을 말하며, 사용자가 입력한 값을 받아오는 자리, 그 자리에 선언된 변수는 지역변수여서 초기화가 반드시 필요 → 메소드를 호출할 때 초기화 값이 결정
  • 그 괄호 안에서는 오직 선언만 가능함(초기화는 불가)
  • 사실, 메인 메소드 부분은 시스템, 사용자가 결정하는 부분이어서 나중엔 작성을 줄이는 방향으로 진행 예정
  • 인스턴스화 방법
    • 자체 메소드도 non-static인 경우, 인스턴스화 필요
    • 다른 클래스의 메소드를 가져와서 사용 가능(인스턴스화, 재사용성, 이식성)
    • 주소번지 or 인스턴스변수.해당 메소드가 선언된 소유주.메소드();

강의 목적 → 변수(Variable) 이해와 선언

변수 정리

  • 변수 선언 → (접근제한자) 타입 변수이름 대입연산자 값;
    • 접근제한자 : public 또는 private
  • 변수의 종류 : 8가지 중 일부만 학습
  • 변수의 종류
    • 참조형 타입(reference data type) : 변수 호출, 주소번지, 클래스 인 것은 모두 여기에 해당, 레퍼런스 타입(주소 번지), . 인스턴스화(필수 예약어 new)
    • 원시형 타입(primitive data type) : 호출하면 값이 나옴. → 한 번에 하나만 담을 수 있음

정리표

종류할당되는 메모리 크기타입표시
int4byte원시형
double8byte원시형
boolean8byte원시형
String1byte참조형-
  • 인스턴스 변수
    • 인스턴스화에 사용된 변수
    • 인스턴스 변수로 호출할 수 있는 건 전역변수 뿐이다.(지역변수 불가)
  • 선언위치, 붙는 수정자에 따른 분류
    • 전역변수(global) :

      • 인스턴스 변수 호출 o, 초기화 생략o(생성자가 대신 해주고, 기본값이 저장해주고 있다.)
      • 인스턴스 변수.변수 → 메인메소드에서 호
    • 지역변수(local) :

      • 인스턴스 변수 호출x, 컴파일x, 초기화 생략x
      • local variable(내 pc에서만), automatic variable(메소드에서 사용 후 자동으로 사라져서)
    • 정적변수(static) : ‘클래스타입.변수명’으로 사용(싱글톤, 하나다, 공유된다)

      int     i   =  0;
      타입   이름  =;
      ----------
                   ----    
        (선언)    (초기화)
  • 변수 전환
    • 강제형전환(캐스팅 연산자 괄호를 활용 → i = (int) d;
    • 괄호 안에는 왼쪽 타입명을 적는다 → 대입연산자는 오른쪽 값이 왼쪽으로 들어가기 때문
    • 치환할 때, 더 큰 타입은 작은 타입에 담을 수 없음

연산자

  • 대입연산자 = → 오른쪽에는 더 작은 것이 와야 함. 오른쪽의 값이 왼쪽으로 들어감.
    • int i = 0; ((접근제한자) 타입 이름 = 값;) → i 변수에는 0 값이 들어감.(초기화)
    • 초기화는 위치에 따라 결과가 달라지기 때문에 중요(중급)
  • 다트연산자 . → 앞에 소유자가 나옴, 다른 말로 ‘주소 번지, 고급언어, 인스턴스 변수’

디버그 실행

  • 방법
    • 해당행 선택, 마이너스, 화살표 표시, 북마크 더하기(리본), 디버그 실행(alt + shift + d & j)
  • why?
    • 각 변수의 생성여부, 생성되는 주소번지 확인 가능
    • 각 클래스 내부의 변수 확인 가능, 값을 언제 갖는지 확인

변수 종류(자세히)

  • 변수크기 :
  • int(정수)
  • double
  • boolean
    • True or False 값을 갖고 조건문, 반복문에서 사용 → 중요

      public class Boolean1 {
      
      	public static void main(String[] args) {
      		boolean isOk = false; //boolean 타입에는 접두어로 is를 붙임
      		isOk = true;
      		if(isOk) { //false
      			System.out.println("괄호 안 조건식이 true일 때 실행");
      		}else {
      			System.out.println("false일 때 실행");
      		}
      	}
  • static
    public class Static1 {
    	//아래 변수는 모두 원시형 타입이라 변수 호출 시 값이 출력됨
    	//참조형 변수는 호출하면 주소번지가 출력됨
    	int i = 1; //정적 변수는 클래스급, 하나만 생성
    	static int j = 2;
    	public double d = 0.5;
    	public void methodA() {
    		System.out.println("메소드A 호출 성공"); //꼭 호출해보는 습관 들이기!!
    	}
    	public static void methodB() {
    		System.out.println("메소드B 호출 성공");
    	}
    	public static void main(String[] args) {
    		Static1 s = new Static1();
    		System.out.println(s.i); // i는 non-static 이라 직접 접근 불가능하여 인스턴스화 필요
    		System.out.println(j); // 변수 j 선언 시 static을 붙여서 인스턴스 변수 없이 호출 가능
    		//insert here 0.5 출력해 보세요(변수 d)
    		System.out.println(s.d); //인스턴스변수.변수로 호출
    		s.methodA(); //static이 없어 불가 -> 해결 : 앞에 다트연산자 사용하여 추가
    		methodB();
    	}
    }

소스 리뷰 - 코드를 작성하는 convention(약속, 규칙) 확인

0개의 댓글