Jawaban ini bagus dan benar.
Saya ingin menambahkan bahwa dalam beberapa kasus kompromi dilakukan demi kegunaan.
Objek tipe String dapat dipakai tanpa kejadian baru, saat String bukan primitif:
String s = "Hello";
String menjadi non-primitif, harus dipakai seperti ini:
String s = new String("Hello"); // this also works
Tetapi kompiler memungkinkan untuk opsi yang lebih pendek, lebih sedikit OO, karena String sejauh ini adalah kelas yang paling banyak digunakan di API.
Array juga dapat diinisialisasi dengan cara non-OO:
int i[] = {1,2,3};
Cukup aneh, objek adalah turunan dari kelas atau array . Array makna adalah jenis kelas yang benar-benar terpisah.
Array memiliki length
bidang publik yang tidak konstan. Juga tidak ada dokumentasi pada array kelas adalah turunan dari. (jangan bingung dengan kelas Array atau java.reflect.Array).
int a = myArray.length; // not length()