Java'da yeni olduğum için sınıf ve tür kavramları arasında kafam karıştı . Örneğin, nesne türe mi yoksa sınıfa mı "Hello World!"
ait olmalıdır ? Ya da belki ikisi birden? String
String
Java'da yeni olduğum için sınıf ve tür kavramları arasında kafam karıştı . Örneğin, nesne türe mi yoksa sınıfa mı "Hello World!"
ait olmalıdır ? Ya da belki ikisi birden? String
String
Yanıtlar:
Sınıf bir türdür. Arayüz bir türdür. İlkel bir türdür. Dizi bir türdür.
Bu nedenle, her tür aynı zamanda bir sınıf (enum sabiti dahil), arabirim, ilkel veya dizidir.
İki farklı tür kategorisi vardır: ilkel türler ve başvuru türleri:
Object
. Başvuru türleri, sınıf türleri (enum türleri dahil), arabirim türleri ve dizi türleridir.Her veri parçasının, yapısını tanımlayan bir türü vardır, yani ne kadar bellek kaplar, nasıl düzenlenir ve daha da önemlisi, onunla nasıl etkileşim kurabilirsiniz.
İlkel türlere örnekler:
int
float
char
boolean
Sınıf türlerine örnekler:
Arayüz türlerine örnekler:
Dizi türlerine örnekler:
int[]
String[]
Integer[][][]
Temel olarak, değişken olarak adlandırabileceğiniz her şeyin bir türü vardır ve sınıflar da bir türdür.
Daha fazla bilgi burada: http://docs.oracle.com/javase/specs/jls/se8/html/jls-4.html
TLDR - Sınıf, Java'daki Türlerden biridir.
Not - Cevabı tam olarak anlamak için, Java'daki jenerikler hakkında küçük bir fikriniz olmalıdır.
Farkı anlamak için bize ilk anlayalım Tipi Java olduğunu.
Göre JLS SE 10 ,
İki türü vardır türleri : Java programlama dilinde ilkel türleri ( §4.2 ) ve referans türleri (§4.3).
İlkel Tür nedir?
a) İntegral türleri , değerleri sırasıyla 8 bit, 16 bit, 32 bit ve 64 bit işaretli ikinin tamamlayıcı tamsayı olan bayt, kısa, int ve uzun ve değerleri 16 bit olan char şeklindedir. UTF-16 kod birimlerini temsil eden işaretsiz tamsayılar (§3.1).
b) kayan nokta türleri şamandıra , değerleri, 32-bit, IEEE 754 kayan nokta sayıları arasında, ve, ikili , Değerleri 64 bit, IEEE 754 kayan nokta sayıları içerir.
c) Boole türünün tam olarak iki değeri vardır: true ve false.
Şimdi gelelim referans türü nedir?
Dört tür başvuru türü vardır: sınıf türleri ( §8.1 ), arabirim türleri ( §9.1 ), tür değişkenleri ( §4.4 ) ve dizi türleri ( §10.1 ).
Tek tek tartışalım.
JLS'de nasıl olduğunu görüyorsanız, Class şu şekilde tanımlanır:
Bir sınıf bildirimi , yeni bir adlandırılmış başvuru türünü belirtir.
İki tür sınıf bildirimi vardır: normal sınıf bildirimleri ve enum bildirimleri .
ClassDeclaration:
NormalClassDeclaration
EnumDeclaration
NormalClassDeclaration:
{ClassModifier} class TypeIdentifier [TypeParameters] [Superclass] [Superinterfaces] ClassBody
Görüyorsunuz [TypeParameters]
, bu, sınıf türünün bu genel sınıfları da içerdiğini gösterir.
class Example<T>{
}
Sınıf türü çağrılacak Example
Kısacası, bir sınıf türü, numaralandırmalarımızı, String
vb gibi normal (genel olmayan) sınıflarımızı ve genel sınıflarımızı da kapsar.
Benzer şekilde, umarım arayüz ve dizi türleri de açıktır. Dizi Türü derken beğenmek int[]
, String[]
vb. Demek istiyoruz .
Son kısma gelelim - Tip değişkenleri. Onlar neler ?
Bir tür değişkeni, sınıf, arabirim, yöntem ve yapıcı gövdelerinde bir tür olarak kullanılan niteliksiz bir tanımlayıcıdır.
Aşağıdaki JLS'deki örnekle anlayalım.
class Test {
<T extends C & I> void test(T t) {
t.mI(); // OK
t.mCPublic(); // OK
t.mCProtected(); // OK
t.mCPackage(); // OK
}
}
Method parametresindeki nesnenizin türde olduğunu görüyorsunuz T
. Evet, bu T
Tip değişkenidir ve referans olarak kullanılabilir / kullanılabilir. Evet öyle. (Bu garip örnek anlaşılamadı - Java'da genel yöntemin ne olduğunu öğrenin)
Bu cevabı tamamlıyor.
"Tür" daha kapsayıcı kategoridir. Java'daki değişkenlerin üç tür türü olabilir: int ve float gibi 8 "ilkel" tür, arabirimler ve sınıflar. Değerler (değişkenlerin aksine) ilkel veya sınıf örnekleri olabilir.
"Tür", 'ne tür veri olduğunu' tanımlar
Ör: "merhaba dünya" bir String -> "merhaba dünya" String tipidir (String int ..'den farklı olarak önceden ölçülen bir veri değildir, bu nedenle "merhaba dünya" bir string sınıfı türüdür diyebiliriz)
10, bir int -> 10, bir tamsayı veri türüdür.