JShell 사용자 입력을 허용하고, 평가하고, 사용자에게 출력을 인쇄하는 Java 9의 대화형 도구입니다.
값 유형과 달리 참조 유형 값을 직접 저장하지 않습니다. 대신 주소 를 저장합니다. 값이 저장되는 곳. 참조 유형 다른 메모리 위치에 대한 포인터 포함 그것은 데이터를 보유하고 있습니다. 참조 유형은 문자열, 배열, 클래스입니다. 및 대리인 .
아래 코드 스니펫에서 Animal의 새 인스턴스를 만들 때 , 힙 메모리에 생성할 수 있습니다. . 새로운 동물() 힙에 객체를 생성합니다. 동물@73846619 , 개체는 주소 73846619의 힙에 저장됩니다. .
스니펫-1
jshell> class Animal { ...> } | created class Animal jshell> Animal dog = new Animal(); dog ==> Animal@73846619
나 n 아래 코드 스니펫, 두 개의 새로운 동물 개체 힙에 생성됩니다. 메모리 위치(참조)는 참조 변수 dog 에 저장됩니다. 및 고양이 . Java에서 모든 클래스는 참조 유형입니다. . 원시 변수 인스턴스를 제외하고 모든 인스턴스 또는 객체는 힙에 저장됩니다. 개체에 대한 참조는 참조 변수에 저장됩니다. 개처럼 및 고양이 .
스니펫-2
jshell> class Animal { ...> int id; ...> public Animal(int id) { ...> this.id = id; ...> } ...> } | created class Animal jshell> Animal dog = new Animal(10); dog ==> Animal@6adede5 jshell> Animal cat = new Animal(20); cat ==> Animal@5025a98f
나 n 아래 코드 스니펫, "j =I "는 "I"의 값을 "j"에 복사합니다. 나중에 "j"의 값이 변경되어도 "I"는 영향을 받지 않습니다. 원시 변수를 사용하여 값을 비교합니다.
스니펫-3
jshell> int i = 5; i ==> 5 jshell> int j; j ==> 0 jshell> j = i; j ==> 5 jshell> j = 10; j ==> 10 jshell> i; i ==> 5 jshell> i == j; $11 ==> false jshell> j = 5; j ==> 5 jshell> i == j; $13 ==> true