Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java 9의 JShell에서 참조 유형을 선언하는 방법은 무엇입니까?


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