জাভাতে JVM এ দুটি মূল ধরণের রয়েছে । 1) আদিম প্রকার এবং 2) রেফারেন্স প্রকার। ইন্ট একটি আদিম ধরণ এবং পূর্ণসংখ্যা একটি শ্রেণির ধরণ (যা প্রকারের রেফারেন্স ধরণের)।
আদিম মানগুলি অন্যান্য আদিম মানগুলির সাথে রাষ্ট্র ভাগ করে না। একটি পরিবর্তনশীল যার প্রকারটি একটি আদিম প্রকার সবসময় সেই ধরণের একটি আদিম মান ধরে।
int aNumber = 4;
int anotherNum = aNumber;
aNumber += 6;
System.out.println(anotherNum); // Prints 4
একটি বস্তু একটি গতিশীলভাবে তৈরি শ্রেণীর উদাহরণ বা একটি অ্যারে। রেফারেন্স মান (প্রায়শই কেবল রেফারেন্স) হ'ল এই অবজেক্টের পয়েন্টার এবং একটি বিশেষ নাল রেফারেন্স, যা কোনও অবজেক্টকে বোঝায় না। একই অবজেক্টের অনেকগুলি রেফারেন্স থাকতে পারে।
Integer aNumber = Integer.valueOf(4);
Integer anotherNumber = aNumber; // anotherNumber references the
// same object as aNumber
এছাড়াও জাভাতে সমস্ত কিছু মান দ্বারা পাস হয়। অবজেক্টের সাথে যে মানটি পাস হয় তা হ'ল অবজেক্টের রেফারেন্স। সুতরাং জাভাতে int এবং পূর্ণসংখ্যার মধ্যে আরেকটি পার্থক্য হ'ল কীভাবে তারা পদ্ধতি কলগুলিতে পাস হয়। উদাহরণস্বরূপ ইন
public int add(int a, int b) {
return a + b;
}
final int two = 2;
int sum = add(1, two);
ভেরিয়েবল দুটি আদিম পূর্ণসংখ্যা টাইপ 2 হিসাবে পাস হয় Where
public int add(Integer a, Integer b) {
return a.intValue() + b.intValue();
}
final Integer two = Integer.valueOf(2);
int sum = add(Integer.valueOf(1), two);
ভেরিয়েবল দুটি একটি অবজেক্টের রেফারেন্স হিসাবে পাস হয় যা পূর্ণসংখ্যার মান 2 রাখে।
@ ওল্ফম্যানড্রাগন: রেফারেন্স দিয়ে পাস করা এইভাবে কাজ করবে:
public void increment(int x) {
x = x + 1;
}
int a = 1;
increment(a);
// a is now 2
যখন বৃদ্ধি বলা হয় এটা পরিবর্তনশীল একটি রেফারেন্স (পয়েন্টার) পাসের একটি । আর বৃদ্ধি ফাংশন সরাসরি পরিবর্তনশীল পরিবর্তন একটি ।
এবং অবজেক্টের ধরণের জন্য এটি নিম্নলিখিত হিসাবে কাজ করবে:
public void increment(Integer x) {
x = Integer.valueOf(x.intValue() + 1);
}
Integer a = Integer.valueOf(1);
increment(a);
// a is now 2
পার্থক্যটা কি এখন দেখছেন?