초기화

stan·2022년 10월 31일
0

Java 개념

목록 보기
1/33

원글 : https://wakestand.tistory.com/92

자바 초기화로 검색을 해 보면

생성자와 묶어서 많이 나오는데

초기화는 생성자(Constructor)에서

변수 값 주는게 초기화인가?

이런 생각이 든다

물론 생성자에서 변수에 값 주는것도 초기화는 맞는데

생성자에서 값 주는것만 초기화가 아니다

간단하게 예제를 통해 알아보면

The local variable a may not have been initialized

에러가 뜨는 것이 보이는데

변수를 초기화(initialized)하지 않아서

에러가 뜨는 것이다

int a = 1; 을 해 주면

초기화가 되고 정상적으로 출력이 되는데

여기서 초기화가 무슨 뜻인지 간단하게 알 수 있다

자바에서 초기화(initialization)란

객체를 선언하고 값을 '최초'로 할당하는 것이다

int a = 10; 이렇게 작성한 것은

선언과 동시에 초기화한 것이고

이후에 a = 20; 이렇게 주면 초기화가 아니라

값을 바꾸는 할당(allocation)이 된다

근데 초기화를 왜 해야할까?

스크린샷 보면 클래스 영역에 선언한

멤버 변수 a,b,c는 선언만 하고 초기화 안해도 되는데?

여기서 클래스 영역에 선언한 변수들은

실행 시 초기화를 하지 않아도

int 타입에 String을 넣는다거나

혹은 String 타입에 int를 넣는

참사를 방지하기 위해

컴파일러에서 아래에 출력한

0, null, null 처럼 자동으로 값을 할당해 준다

그러나 메소드 안에서는

자동으로 값 할당이 되지 않기 때문에

에러가 뜨는 것이다

마지막으로 정리해보자면

Java에서 초기화 뜻은?

  • 선언한 객체에 최초로 값을 넣어주는 것

자바에서 초기화 하는 이유는?

  • 클래스 영역에서 선언할 경우에는

컴파일러가 자동으로 값 할당을 해주나

메소드 영역에서 선언할 경우에는

자동으로 값이 할당되지 않기 때문에

에러가 발생해서 그렇다

예제 코드는 아래의 코드블록을 사용해주면 된다

 

public class InitializationTest {
	int a; // int, String, Boolean 선언
	String b;
	Boolean c;
	
	public static void main(String[] args) {
		InitializationTest it = new InitializationTest(); // 객체화
		System.out.println(it.a);
		System.out.println(it.b);
		System.out.println(it.c);
	}

}
profile
이진 입니다

0개의 댓글

관련 채용 정보