참조타입: 객체의 번지를 참조하는 타입, 배열, 열거, 클래스, 인터페이스
기본타입은 선언되면 메모리 스택영역에 저장,
참조타입(String) 변수는 힙영역에 객체 생성, 스택영역에는 번지가 저장됨
메모리 사용영역
메소드 영역: 클래스 별로, 정적필드, 상수, 생성자, 메소드 코드 등을 분류해 저장
힙 영역: 객체와 배열이 생성되는 영역
JVM스택 영역: 매소드를 호출할때마다 프레임 추가되고, 메소드가 종료되면 해당 프레임 제거
참조 타입 변수는 스택영역에 힙영역에 생성된 객체의 주소 가짐
참조 타입 변수 간의 ==, != 연산
동일 객체를 참조하는지, 다른 객체를 참조하는지 알아볼 떄 사용
번지 값의 비교, 참조하는 객체가 같은지
참조타입 젼수는 객체를 참조하지 않는다는 뜻으로 null 값 가질수 있음
null로 초기화된 참조 변수도 스택영역에 생성
NullpointException
Error: 하드웨어, OS 문제로 발생
Exception: 실행하는 도중 발생
-참조 타입 변수가 null 상태에서 존재하지 않는 객체의 데이터나 메소드 사용할 경우 발생
-해당 참조 변수가 객체를 참조하도록 수정하여 해결
문자열 리터럴 동일한 경우 같은 String 객체를 공유
new 연산자
힙 영역에 새로운 String 객체를 생성, 문자열이 같더라도
문자열 리터럴과 new 연산자로 생성된 객체 비교
String name1 = "홍길동";
String name2 = "홍길동";
String name3 = new String("홍길동");
name1 == name2 true
name1 == name3. false
== 번지 비교 X
equals() 문자열 비교
String 변수 초기값으로 null 대입: String 변수가 참조하는 객체가 없음을 의미
String hobby = "여행";
hobby = null;
참조를 잃은 String 객체는 쓰레기 수집기 (Garbage Collector) 통해 메모리 자동 제거, 따라서 자바는 개발자가 따로 메모리 정리
안해도 됨
'TIL > myself' 카테고리의 다른 글
정처기 실기 스터디 오답문제 (1) | 2022.09.13 |
---|---|
TIL(Today I Learned) 20220421 자바 배열, 자바 열거 타입 (0) | 2022.04.21 |
TIL(Today I Learned) 20220419 자바 조건문과 반복문 (0) | 2022.04.19 |
TIL(Today I Learned) 20220418 자바 연산자과 연산식 (0) | 2022.04.18 |
TIL(Today I Learned) 20220417 자바 변수와 시스템 입출력 (0) | 2022.04.17 |