Tamam, veri türleri Java'da böyle çalışır. (İngilizcemi mazeret göstermeliyim, doğru kelimeleri kullanmıyorum. İkisini birbirinden ayırmanız gerekiyor. Temel veri türleri ve normal veri türleri. Temel veri türleri var olan her şeyi oluşturuyor. Örneğin, orada Tüm sayılar, karakter, boole vb. Normal veri türleri veya karmaşık veri türleri diğer her şeydir Dize karakter dizisidir, dolayısıyla karmaşık veri tipidir.
Oluşturduğunuz her değişken aslında hafızanızdaki değerin bir göstergesidir. Örneğin:
String s = new String("This is just a test");
"s" değişkeni bir String içermez. Bu bir işaretçi. Bu işaretçi, belleğinizdeki değişkeni gösterir. Aradığınızda System.out.println(anyObject)
, toString()
o nesnenin yöntemi çağrılır. Nesne'den geçersiz toString
kılmadıysa, işaretçiyi yazdırır. Örneğin:
public class Foo{
public static void main(String[] args) {
Foo f = new Foo();
System.out.println(f);
}
}
>>>>
>>>>
>>>>Foo@330bedb4
"@" In arkasındaki her şey işaretçi. Bu yalnızca karmaşık veri türleri için geçerlidir. İlkel veri türleri doğrudan kendi işaretçilerine kaydedilir. Yani aslında bir işaretçi yoktur ve değerler doğrudan saklanır.
Örneğin:
int i = 123;
i bu durumda bir işaretçi saklamıyor. i tam sayı değerini (123 bayt cinsinden) saklayacağım.
Tamam, ==
operatöre geri dönelim . İşaretçinin bellekteki konumuna kaydedilen içeriği değil, her zaman işaretçiyi karşılaştırır.
Misal:
String s1 = new String("Hallo");
String s2 = new String("Hallo");
System.out.println(s1 == s2);
>>>>> false
Bu her iki Dize farklı bir işaretçiye sahiptir. Ancak String.equals (Diğer String) içeriği karşılaştırır. Aynı içeriğe sahip iki farklı nesnenin işaretçisi eşit olduğundan, ilkel veri türlerini '==' işleci ile karşılaştırabilirsiniz.
Null, işaretçinin boş olduğu anlamına gelir. Boş bir ilkel veri türü varsayılan olarak 0'dır (sayılar için). Ancak herhangi bir karmaşık nesne için null değeri, o nesnenin mevcut olmadığı anlamına gelir.
Selamlar
null
herhangi bir yöntemi yok, bu yüzden de yokequals()
. EğermyString
vardınull
, nasıl hiç üzerinde bir yöntemi çağırmak ki? :)