Java'da JVM'de iki temel tür vardır . 1) İlkel türler ve 2) Referans Türleri. int ilkel bir tiptir ve Integer bir sınıf tipidir (bu bir tür referans tipidir).
İlkel değerler durumu diğer ilkel değerlerle paylaşmaz. Türü ilkel tür olan bir değişken her zaman bu türün ilkel değerini tutar.
int aNumber = 4;
int anotherNum = aNumber;
aNumber += 6;
System.out.println(anotherNum); // Prints 4
Nesne, dinamik olarak oluşturulmuş bir sınıf örneği veya dizisidir. Referans değerleri (genellikle sadece referanslar) bu nesnelere işaret eder ve hiçbir nesneyi ifade etmeyen özel bir boş referanstır. Aynı nesneye birçok referans olabilir.
Integer aNumber = Integer.valueOf(4);
Integer anotherNumber = aNumber; // anotherNumber references the
// same object as aNumber
Ayrıca Java'da her şey değerden geçer. Nesnelerde iletilen değer nesneye yapılan başvurudur. Java'da int ve Integer arasındaki bir diğer fark, yöntem çağrılarına nasıl geçildikleri. Örneğin,
public int add(int a, int b) {
return a + b;
}
final int two = 2;
int sum = add(1, two);
Değişken iki Oysa ilkel tamsayı tip 2 olarak geçirilir
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);
Değişken iki tamsayı değeri 2 tutan bir nesne için bir referans olarak geçirilir.
@WolfmanDragon: Referansla geçmek şöyle çalışır:
public void increment(int x) {
x = x + 1;
}
int a = 1;
increment(a);
// a is now 2
Arttırma çağrıldığında değişken bir referans (pointer) geçer a . Ve arttırma işlevi doğrudan değişken değiştirir a .
Ve nesne türleri için aşağıdaki gibi çalışır:
public void increment(Integer x) {
x = Integer.valueOf(x.intValue() + 1);
}
Integer a = Integer.valueOf(1);
increment(a);
// a is now 2
Şimdi farkı görüyor musunuz?