Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

จะประกาศประเภทอ้างอิงใน JShell ใน Java 9 ได้อย่างไร


JShell เป็นเครื่องมือโต้ตอบใน Java 9 ที่อนุญาตให้ผู้ใช้ป้อนข้อมูล ประเมิน และพิมพ์ผลลัพธ์ไปยังผู้ใช้

ไม่เหมือนกับประเภทค่า ประเภทการอ้างอิง ไม่เก็บค่าไว้โดยตรง แต่จะเก็บ ที่อยู่ ที่ซึ่งค่าถูกเก็บไว้ หมายความว่า ประเภทอ้างอิง มี ตัวชี้ไปยังตำแหน่งหน่วยความจำอื่น ที่เก็บข้อมูล ประเภทการอ้างอิงคือ สตริง อาร์เรย์ คลาส และ ตัวแทน .

ในข้อมูลโค้ดด้านล่าง เมื่อเราสร้างตัวอย่างใหม่ของ สัตว์ สามารถสร้างได้ใน หน่วยความจำฮีป . สัตว์ใหม่() สร้างวัตถุบนฮีป Animal@73846619 , วัตถุถูกเก็บไว้ใน Heap ตามที่อยู่ 73846619 .

Snippet-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" จะไม่ได้รับผลกระทบ โดยใช้ตัวแปรพื้นฐาน เปรียบเทียบค่าของพวกมัน

Snippet-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