JShell জাভা 9-এ একটি ইন্টারেক্টিভ টুল যা ব্যবহারকারীর ইনপুট, মূল্যায়ন এবং ব্যবহারকারীকে আউটপুট প্রিন্ট করতে দেয়।
একটি মান প্রকারের বিপরীতে, একটি রেফারেন্স প্রকার সরাসরি এর মান সঞ্চয় করে না। পরিবর্তে, এটি ঠিকানা সংরক্ষণ করবে যেখানে একটি মান সংরক্ষণ করা হয়। এর মানে হল একটি রেফারেন্স টাইপ একটি অন্য মেমরি অবস্থানের পয়েন্টার রয়েছে৷ যে ডেটা ধারণ করে। রেফারেন্স প্রকারগুলি হল স্ট্রিং, অ্যারে, ক্লাস, এবং প্রতিনিধি .
নিচের কোড স্নিপেটে, যখন আমরা প্রাণীর একটি নতুন উদাহরণ তৈরি করি , এটি হিপ মেমরিতে তৈরি করা যেতে পারে . নতুন প্রাণী() হিপে একটি বস্তু তৈরি করে। Animal@73846619 , বস্তুটি 73846619 ঠিকানায় হিপে সংরক্ষণ করা হয় .
স্নিপেট-1
৷jshell> class Animal { ...> } | created class Animal jshell> Animal dog = new Animal(); dog ==> Animal@73846619
আমি নিচের কোড স্নিপেটে, দুটি নতুন প্রাণী বস্তু গাদা উপর তৈরি করা হয়. তাদের মেমরি অবস্থান (রেফারেন্স) রেফারেন্স ভেরিয়েবল কুকুর এ সংরক্ষণ করা হয় এবং বিড়াল . জাভাতে, সমস্ত ক্লাস হল রেফারেন্স টাইপ . আদিম পরিবর্তনশীল উদাহরণ ব্যতীত, সমস্ত দৃষ্টান্ত বা বস্তু হিপে সংরক্ষণ করা হয়। বস্তুর রেফারেন্সগুলি রেফারেন্স ভেরিয়েবলে সংরক্ষণ করা হয় যেমন কুকুর এবং বিড়াল .
স্নিপেট-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