ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 초기화
    백엔드/자바 2020. 8. 5. 16:05

    변수의 초기화란?

    변수의 초기화란 숫자를 0으로 만들어주는 것이 아니다.

     

    '변수를 선언하고 처음으로 값을 저장하는 것을 변수의 초기화'라고 한다.

     

    물론 변수에 초기화를 하지 않아도 변수 자체가 기본값을 가지고 있어서 에러가 나진 않는다.

    초기화의 필요성

    초기화를 통해 값을 지정해주면 더욱 정확한 결과를 얻어낼 수 있다.

     

    변수 초기화는 변수를 선언시 해줄 수도 있고, 당장 변수를 쓰는게 아니면 추후에 해줄 수도 있다.

     

    초기화는 모든 생성자에 공통으로 수행되는 문장이 필요할 때 초기화 블럭에 모아서 한번에 써주면 코드가 간결해진다.

     

    초기화의 종류는 크게 명시적 초기화와 초기화 블럭을 이용한 초기화 두 가지로 나뉜다.

     

    1. 명시적 초기화(explicit initailization)

    변수를 선언함과 동시에 초기화 하는 것을 명시적 초기화라고 한다.

     

    가장 기본적이고 간단한 초기화 방법이다.

     

    방법은 다음과 같다.

     

    "변수 자료형 + 변수 명 + =(대입연산자) + 원하는 숫자 또는 문자"

     

    대입 연산자를 이용해 변수에 숫자를 입력하면 되는 아주 간단한 초기화다.

     

    명시적 초기화를 구현한 코드

     

    class Son{
    
    	int score = 100;  // 정수형 변수 선언과 초기화
    	String name = "김XX";  // 문자형 변수 선언과 초기화
    	int number = 5;  // 정수형 변수 선언과 초기화
    
    }

     

     

    2. 초기화 블럭

    명시적 초기화가 선언과 동시에 값을 준다면 초기화 블럭은 선언 후에 값을 저장한다.

     

    명시적 초기화가 단순히 값을 입력하는데 그친다면 초기화 블럭은 조금 더 복잡한 코드를 수행할 때 이용한다.

     

    형태는 '클래스 내에 대괄호 ( { } )를 넣고 그 안에 초기화할 내용을 입력'해주면 끝이다.

     

    추가로 클래스 초기화 블럭의 경우 static을 대괄호 앞에 붙여주면 된다.

     

    초기화 블럭의 예시 코드

     

    class Son {  // 클래스 선언
    	int score;  // 정수형 멤버변수 score 선언
    	String name;  // 문자열형 멤버변수 name 선언
    	int number; // 정수형 멤버변수 number 선언
    	
    	{  // 초기화 블럭
    		score = 100;  //score 변수 초기화
    		name = "김학생"; // name 변수 초기화
    		number = 7;  // number 변수 초기화
    	}
    }

     

     

    (1) 클래스 초기화 블럭

    클래스 초기화 블럭은 클래스가 메모리에 처음 로딩될 때 단 한번만 수행된다.

     

    즉 인스턴스가 새로 생성된다고 해서 초기화 블럭의 명령이 매번 실행되는 것은 아니라는 뜻이다.

     

    초기화 블럭 형식인 대괄호 ( { } )앞에 static을 붙이면 설정이 된다.

     

    (2) 인스턴스 초기화 블럭

    인스턴스가 새로 생성될 때마다 초기화 블럭 내의 명령이 매번 새로 실행된다는 것이다.

    '백엔드 > 자바' 카테고리의 다른 글

    추상 메서드 (abstract method)  (0) 2020.08.06
    상속과 다형성(polymorphism)  (0) 2020.08.05
    생성자(Constructor)  (0) 2020.08.05
    클래스 / 메소드 오버라이딩(method overriding)  (0) 2020.07.28
    클래스의 super와 super()  (1) 2020.07.28
Designed by Tistory.