오늘이라도

혼자 공부하는 자바, Ch. 05-1 참조 타입과 참조 변수 본문

취업성공패키지 SW 개발자 교육/Java

혼자 공부하는 자바, Ch. 05-1 참조 타입과 참조 변수

upcake_ 2020. 3. 12. 20:50
반응형

https://github.com/upcake/Class_Examples

교육 중에 작성한 예제들은 깃허브에 올려두고 있습니다. 


1. 기본 타입과 참조 타입

 - 기본 타입의 변수는 실제 값을 변수 안에 저장하지만, 참조 타입인 배열, 열거, 클래스, 인터페이스 변수는 메모리의 번지를 변수 안에 저장한다.

 

 

2. 메모리 사용 영역

 (1) 메소드 영역 : JVM이 시작할때 생성되고 모든 스레드가 공유하는 영역이다.

 (2) 힙 영역 : 객체와 배열이 생성되는 영역이다.

 (3) JVM 스택 영역 : 메소드를 호출할 때마다 프레임을 추가하고 메소드가 종료되면 해당 프레임을 제거하는 동작을 수행한다.

 - 추가를 push, 제거를 pop이라고 한다.

 

3. 참조 변수의 ==, != 연산

 - 기본 타입 변수의 ==, != 연산은 변수의 값이 같은지, 아닌지를 조사한다.

 - 참조 타입 변수의 ==, != 연산은 동일한 객체를 참조하는지, 다른 객체를 참조하는지 알아볼 때 사용된다.

 - 참조 타입 변수의 값은 힙 영역의 객체 주소이므로 번지 값을 비교하는 것이 된다.

 - 동일한 번지 값을 갖고 있다는 것은 동일한 객체를 참고한다는 의미이며 == 연산의 결과는 true가 된다.

 

4. null과 NullPointerException

 - 참조 타입 변수의 null 값은 힙 영역의 객체를 참조하지 않는다는 뜻이다.

 - 자바를 실행하는 도중에 발생하는 오류를 예외, Exception이라고 부른다.

 - 가장 흔한 예외 중 하나로 NullPointerException이 있다. 이 예외는 참조 타입 변수를 잘못 사용하면 발생한다.

 

5. String 타입

 - 자바에서 문자열은 String 객체로 생성되고 변수는 String 객체를 참조한다. 이것을 일반적으로 String 변수에 저장한다고 표현한다.

 - 문자열 리터럴이 동일하다면 String 객체를 공유하도록 되어 있다.

 - new 연산자를 사용해서 직접 String 객체를 생성시킬 수도 있다.

 - new 연산자는 힙 영역에 새로운 객체를 만들 때 사용하는 연산자로 객체 생성 연산자라고 한다.

 - 문자열 리터럴로 생성하느냐 new 연산자로 생성하느냐에 따라 비교 연산자의 결과는 달라질 수 있다.

 

▲예제 01. 문자열 비교

반응형