JShell là một công cụ tương tác trong Java 9 cho phép người dùng nhập, đánh giá nó và in đầu ra cho người dùng.
Không giống như loại giá trị, loại tham chiếu không lưu trữ trực tiếp giá trị của nó. Thay vào đó, nó sẽ lưu trữ địa chỉ nơi một giá trị được lưu trữ. Có nghĩa là loại tham chiếu chứa một con trỏ đến một vị trí bộ nhớ khác giữ dữ liệu. Các loại tham chiếu là Chuỗi, mảng, lớp, và đại biểu .
Trong đoạn mã dưới đây, khi chúng tôi tạo một phiên bản mới của Động vật , nó có thể được tạo trên bộ nhớ heap . Động vật mới () tạo một đối tượng trên Heap. Animal @ 73846619 , đối tượng được lưu trữ trên Heap tại địa chỉ 73846619 .
Snippet-1
jshell> class Animal { ...> } | created class Animal jshell> Animal dog = new Animal(); dog ==> Animal@73846619
I n đoạn mã bên dưới, hai Đối tượng động vật mới được tạo trên Heap. Vị trí bộ nhớ của chúng (tham chiếu) được lưu trữ trong các biến tham chiếu dog và mèo . Trong Java, tất cả các lớp đều là Loại tham chiếu . Ngoại trừ các cá thể biến nguyên thủy, tất cả các cá thể hoặc đối tượng đều được lưu trữ trên Heap. Các tham chiếu đến các đối tượng được lưu trữ trong các biến tham chiếu như con chó và mèo .
Snippet-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
I n đoạn mã bên dưới, " j =I "sao chép giá trị của" I "thành" j ". Sau đó, khi giá trị của" j "được thay đổi," I "không bị ảnh hưởng. Bằng cách sử dụng các biến nguyên thủy, hãy so sánh các giá trị của chúng.
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