Di Jawa ada dua tipe dasar dalam JVM . 1) tipe primitif dan 2) tipe referensi. int adalah tipe primitif dan Integer adalah tipe kelas (yang merupakan jenis tipe referensi).
Nilai-nilai primitif tidak berbagi keadaan dengan nilai-nilai primitif lainnya. Variabel yang jenisnya adalah tipe primitif selalu memiliki nilai primitif dari tipe itu.
int aNumber = 4;
int anotherNum = aNumber;
aNumber += 6;
System.out.println(anotherNum); // Prints 4
Objek adalah instance kelas atau array yang dibuat secara dinamis. Nilai referensi (seringkali hanya referensi) adalah penunjuk ke objek ini dan referensi nol khusus, yang merujuk ke objek yang tidak ada. Mungkin ada banyak referensi ke objek yang sama.
Integer aNumber = Integer.valueOf(4);
Integer anotherNumber = aNumber; // anotherNumber references the
// same object as aNumber
Juga di Jawa semuanya dilewatkan oleh nilai. Dengan objek nilai yang dilewatkan adalah referensi ke objek. Jadi perbedaan lain antara int dan Integer di java adalah bagaimana mereka dilewatkan dalam pemanggilan metode. Misalnya dalam
public int add(int a, int b) {
return a + b;
}
final int two = 2;
int sum = add(1, two);
Variabel dua dilewatkan sebagai tipe integer primitif 2. Sedangkan di
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);
Variabel dua dilewatkan sebagai referensi ke objek yang memiliki nilai integer 2.
@ WolfolfDragon: Lulus dengan referensi akan bekerja seperti ini:
public void increment(int x) {
x = x + 1;
}
int a = 1;
increment(a);
// a is now 2
Ketika kenaikan disebut melewati referensi (pointer) ke variabel a . Dan fungsi kenaikan secara langsung memodifikasi variabel a .
Dan untuk tipe objek akan berfungsi sebagai berikut:
public void increment(Integer x) {
x = Integer.valueOf(x.intValue() + 1);
}
Integer a = Integer.valueOf(1);
increment(a);
// a is now 2
Apakah Anda melihat perbedaannya sekarang?