목록이것이 자바다/05 참조 타입 (21)
충분히 쌓여가는
name1과 name2는 동일한 문자열 리터럴로 생성된 객체를 참조하기 때문에 name1 == name2의 결과는 true가 나오지만, name3은 new 연산자로 String 객체를 별도로 생성했기 때문에 name1 == name3의 결과는 false가 나온다 String name1 = "홍길동"; String name2 = "홍길동"; String name3 = new String("홍길동"); name1 == name2 //true name1 == name3 //false 내부 문자열만을 비교할 경우에는 String 객체의 equals() 메소드를 사용한다 boolean result = str1.equals(str2); //문자열이 같은지 검사(대소문자 구분)
참조 타입 변수는 아직 번지를 저장하지 않고 있다는 뜻으로 null 값을 가질 수 있다 null로 초기화된 참조 변수는 스택 영역에 생성된다 참조 변수가 null 값을 가지는지 확인하려면 ==, != 연산 수행 String reVar1 = "자바"; String reVar2 = null; refVar1 == null //false refVar1 != null //true reVar2 == null //true reVar2 != null //false 참조 변수를 사용하면서 가장 많이 발생하는 예외 중 하나는 NullPointerException 변수가 null인 상태에서 객체의 데이터나 메소드를 사용하려 할 때 NullPointerException이 발생함 변수가 null인 상태에서 객체의 데이터나 메소..
java 명령어로 JVM이 구동되면 JVM은 운영체제에서 할당받은 메모리 영역(Rumtime Data Area)을 메소드 영역, 힙 영역, 스택 영역으로 구분해서 사용 메소드 Method 영역 : 바이트코드 파일을 읽은 내용이 저장되는 영역 클래스 별로 상수, 정적 필드, 메소드 코드, 생성자 코드 등이 저장됨 힙 Heap 영역 : 객체가 생성되는 영역 객체의 번지는 메소드 영역과 스택 영역의 상수와 변수에서 참조할 수 있다 스택 Stack 영역 메소드를 호출할 때마다 생성되는 프레임 Frame이 저장되는 영역 메소드 호출이 끝나면 프레임은 자동 제거됨 프레임 내부에는 로컬 변수 스택이 있고, 여기에서 참조 타입 변수가 생성되고 제거된다