Java'da dizeler iki şekilde oluşturulabilir:
Çift tırnak kullanmakla yapıcı kullanmak arasındaki fark nedir?
1. Çift tırnak ve yapıcı
Bu soru iki basit örnekle cevaplanabilir.
Liezi 1
a == b doğrudur, çünkü a ve b, yöntem alanında aynı dize değişmezine başvurur. Bellek referansları aynıdır.
Aynı dize değişmezi birden çok kez oluşturulduğunda, her farklı dize değerinin yalnızca bir kopyası saklanır.
Bu sözde "dizi stajı" dır.
Java'da, tüm sabit dizeler derleme zamanında otomatik olarak askıya alınır.
Örnek 2
c == d yanlıştır, çünkü c ve d öbek içindeki iki farklı nesneyi ifade eder. Farklı nesnelerin her zaman farklı bellek referansları vardır.
Şekil, yukarıdaki iki durumu göstermektedir:
2. Runtime string staj
LukasEder'e teşekkürler (yorumları aşağıdaki gibidir):
Yapıcılar ile iki Dize oluşturulmuş olsa bile, dize interneti çalışma zamanında hala yapılabilir:
3. Hangisi ne zaman kullanılmalı
"Abcd" metni zaten String türünde olduğundan, yapıcıyı kullanmak gereksiz ek bir nesne oluşturacaktır.
Bu nedenle, yalnızca bir dizge oluşturmanız gerekiyorsa, çift tırnak kullanmalısınız.
Yığın içinde gerçekten yeni bir nesne oluşturmanız gerekiyorsa, yapıcıyı kullanmalısınız.