오늘이라도
혼자 공부하는 자바, Ch. 05-1 참조 타입과 참조 변수 본문
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 연산자로 생성하느냐에 따라 비교 연산자의 결과는 달라질 수 있다.
'취업성공패키지 SW 개발자 교육 > Java' 카테고리의 다른 글
17. 예외 (0) | 2020.03.16 |
---|---|
혼자 공부하는 자바, Ch. 05-2 배열 (0) | 2020.03.12 |
16. 배열, 교환, 배열 교환 (0) | 2020.03.12 |
Java의 정석, Ch. 02-4 기본형(primitive type) (0) | 2020.03.11 |
15. Scanner 문제, 승부조작 주사위 게임, 업다운게임 (0) | 2020.03.11 |