Karena baru mengenal Java, saya bingung antara konsep class dan type . Misalnya, haruskah objek tersebut "Hello World!"
termasuk dalam tipe String
atau kelas String
? Atau mungkin keduanya?
Karena baru mengenal Java, saya bingung antara konsep class dan type . Misalnya, haruskah objek tersebut "Hello World!"
termasuk dalam tipe String
atau kelas String
? Atau mungkin keduanya?
Jawaban:
Kelas adalah tipe. Antarmuka adalah tipe. Primitif adalah tipe. Array adalah tipe.
Oleh karena itu, setiap tipe juga bisa berupa kelas (termasuk konstanta enum), antarmuka, primitif, atau larik.
Ada dua kategori tipe yang berbeda: tipe primitif dan tipe referensi:
Object
. Jenis referensi adalah jenis kelas (termasuk jenis enum), jenis antarmuka, dan jenis array.Setiap bagian data memiliki tipe yang menentukan strukturnya, yaitu berapa banyak memori yang digunakan, bagaimana penataannya, dan yang lebih penting, bagaimana Anda dapat berinteraksi dengannya.
Contoh tipe primitif:
int
float
char
boolean
Contoh tipe kelas:
Contoh jenis antarmuka:
Contoh tipe array:
int[]
String[]
Integer[][][]
Pada dasarnya, apa pun yang bisa Anda rujuk sebagai variabel memiliki tipe, dan kelas adalah sejenis tipe.
Info lebih lanjut di sini: http://docs.oracle.com/javase/specs/jls/se8/html/jls-4.html
TLDR - Kelas adalah salah satu Jenis di Jawa.
Catatan - Untuk memahami jawabannya, Anda harus memiliki sedikit ide tentang obat generik di Java.
Untuk memahami perbedaannya mari kita terlebih dahulu memahami apa itu Type di Java.
Menurut JLS SE 10 ,
Ada dua jenis tipe dalam bahasa pemrograman Java: tipe primitif ( §4.2 ) dan tipe referensi (§4.3).
Apa itu Tipe Primitif?
a) Tipe integral adalah byte, short, int, dan long , yang nilainya masing-masing 8-bit, 16-bit, 32-bit dan 64-bit, dua komplemen, dan char, yang nilainya 16-bit integer tak bertanda tangan yang mewakili unit kode UTF-16 (§3.1).
b) Tipe floating-point adalah float , yang nilainya mencakup angka floating-point IEEE 754 32-bit, dan double , yang nilainya mencakup angka floating-point IEEE 754 64-bit.
c) Tipe boolean memiliki tepat dua nilai: benar dan salah.
Sekarang, mari kita bahas apa itu tipe referensi?
Ada empat macam jenis referensi: jenis kelas ( §8.1 ), jenis antarmuka ( §9.1 ), jenis variabel ( §4.4 ), dan jenis array yang ( §10.1 ).
Yuk kita bahas satu persatu.
Jika Anda melihat caranya di JLS, Kelas didefinisikan seperti ini:
Sebuah deklarasi kelas menetapkan bernama tipe referensi baru.
Ada dua jenis deklarasi kelas: deklarasi kelas normal dan deklarasi enum .
ClassDeclaration:
NormalClassDeclaration
EnumDeclaration
NormalClassDeclaration:
{ClassModifier} class TypeIdentifier [TypeParameters] [Superclass] [Superinterfaces] ClassBody
Anda lihat [TypeParameters]
, ini menunjukkan bahwa tipe kelas menyertakan kelas-kelas generik itu juga.
class Example<T>{
}
Jenis kelas akan dipanggil Example
Singkatnya, tipe kelas mencakup enum kami, kelas reguler (non generik) kami seperti String
dll dan juga kelas generik kami.
Demikian pula, saya berharap antarmuka dan jenis array juga jelas. Yang kami maksud dengan Jenis array adalah suka int[]
, String[]
dll.
Mari kita sampai pada bagian terakhir - Jenis variabel. Apakah mereka ?
Variabel tipe adalah pengenal yang tidak memenuhi syarat yang digunakan sebagai tipe dalam kelas, antarmuka, metode, dan badan konstruktor.
Mari kita pahami dengan contoh di JLS di bawahnya.
class Test {
<T extends C & I> void test(T t) {
t.mI(); // OK
t.mCPublic(); // OK
t.mCProtected(); // OK
t.mCPackage(); // OK
}
}
Anda melihat bahwa objek Anda di parameter metode berjenis T
. Ya, ini T
adalah variabel Jenis dan dapat / dapat digunakan sebagai referensi. Ya itu. (Tidak dapat memahami contoh aneh ini - Pelajari apa itu metode generik di Java)
Ini melengkapi jawabannya.
"Jenis" adalah kategori yang lebih inklusif. Variabel di Java dapat memiliki tiga jenis tipe: 8 tipe "primitif" seperti int dan float, antarmuka, dan kelas. Nilai (sebagai lawan variabel) bisa primitif atau instance kelas.
"Type" mendefinisikan 'jenis datanya'
Contoh: "hello world" adalah String -> "hello world" adalah tipe String (String bukan data premetif tidak seperti int .. jadi kita bisa mengatakan "hello world" adalah tipe kelas string)
10 adalah int -> 10 adalah tipe data integer.