메뉴 건너뛰기

조회 수 84 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

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

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

초기화는 생성자(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);
	}

}

List of Articles
번호 제목 날짜 조회 수
151 자바 클래스와 메서드 2023.02.15 74
150 조건문과 제어문 2023.02.15 61
149 Singleton Pattern 과 DeadLock file 2023.02.15 74
148 자바 Thread dump file 2023.02.15 58
147 request header 로부터 접속 정보 확인 file 2023.02.15 74
146 자바 extends Thread, implements Runnable 차이 file 2023.02.15 77
145 자바 쓰레드 예제 및 사용 이유 알아보기 file 2023.02.15 72
» 자바 초기화는 무슨 뜻이고 왜 해야할까? file 2023.02.15 84
143 자바 extends, implements 차이점 알아보기 file 2023.02.15 75
142 자바 생성자란 무엇인가? file 2023.02.15 61
141 자바 필드, 멤버 변수, 전역 변수는 같은 말? file 2023.02.15 74
140 자바 클래스, 객체, 인스턴스 구분하기 file 2023.02.15 52
139 자바 객체화(인스턴스화) 알아보기 file 2023.02.15 69
138 자바 this, super 차이 알아보기 file 2023.02.15 72
137 자바 오버라이드, 오버로드 차이 알아보기 file 2023.02.15 70
136 자바 Statement PreparedStatement 차이 알아보기 file 2023.02.15 53
135 자바 메소드(Method)란 무엇인가? file 2023.02.15 78
134 자바에서 문자열 비교 시 == 가 아닌 equals를 써야하는 이유 file 2023.02.15 114
133 자바 배열 복사하는 방법 file 2023.02.15 61
132 자바 int 값 자리수 구하기 file 2023.02.15 74
Board Pagination Prev 1 2 3 4 5 6 7 8 Next
/ 8

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved