&; Yeni bir Dize "()&; değişmez olarak"?
Bir süre Java Dize okuyorum. Aşağıdaki soruları mesaj aşağıda dayanır
Java String is special
Immutability of String in java
Değişmezliğini tanıdı: Şimdi, değişmezliğini tanıdı giderek, String sınıfı değerleri şekilde tasarlanmıştırortak havuzubaşka yerlerde yeniden kullanılabilir/değişkenler. Bu ise
String
oluşturulursa iyi tutarString a = "Hello World!";
Eğer String yaratıyorum ancakString b = new String("Hello World!");
neden bu kadar şey değişmez mi? (ya?). Bu özel bir yığın bellek olduğundan, başka bir değişken etkilemeden bu değiştirmeniz gerekir. Tasarım gereği, bir bütün olarakString
değişmez olarak kabul edilir neden başka bir nedeni var mıydı? Ya da yukarıda benim varsayım yanlış mı?Sormak istediğim ikinci şey hakkında olduortak dize havuzu. Gibi bir string nesnesi oluşturun
String c = "";
boş bir giriş havuzu oluşturulur?
Zaten bu üzerinde herhangi bir yazı var mı? Eğer öyleyse, birisi link paylaşabilir misiniz?
CEVAP
new String()
String
String
sabit bir bir, üretilen ne olursa olsun üreten bir ifadedir.
(new String()
değişken olup olmadığını soran saçma. Program kodu, bir değerdir. Ama bunun gerçekten ne demek olduğunu anlıyorum.)
Eğer
String c = "";
boş bir giriş havuzu oluşturulur olarak bir string nesnesi oluşturursanız ben?
Evet; yani, bir girdi, boş bir dize oluşturulur. Hiçbir şey boş bir String
hakkında özel bir şey var.
Ukala olması, ""
havuz giriş uzun kod yürütülmeden önce oluşturulmuş olur. Aslında, kod yüklenir ... ya da hatta bundan daha önce gerçekleşmiştir.)
Yani, yeni bir öbek nesnenin değişmez olarak iyi olup olmadığını bilmek istedim, ...
Evet. Ama değişmezliğini tanıdı String nesneleri temel özelliğidir. String
tüm nesneler.
Sen, String
API sadece sağlamaz bakınherhangi birString
değiştirmeye yönelik yöntemler. (Tehlikeli biraz dışında ve aptalca1hileler yansıma kullanarak), String
bir mutasyona edebilirsiniz.
ve eğer amaç neydi?.
String
Java sebebi, değişmez bir sınıf basitlik olarak tasarlanmıştır. Daha doğru programlar yazmak için yapar, ve eğer çekirdek string sınıfı değişmez bir arabirim sağlar Eğer diğer insanların kod hakkında / neden okuyun. (Ya da anladığım kadarıyla bu tasarım kararı için gerekçe değildir, en azından.)
Cevap giderek, aynı değişken için diğer kaynaklar nedenlerinden biri olduğunu düşünüyorum. Bana eğer bu anlayış içinde olduğumu hemen bildirin.
Hayır. Bundan daha temel bir gerekliliktir. Sadece, String
tüm nesneler değişmez. Karmaşık özel durum mantık bu anlamak için gerekli yok. Sadece ^< . <<.
"Sicim gibi" Java StringBuilder
StringBuffer
. kullanabilirsiniz nesne bir değişken istiyorsanız kayıt için, Ama bu Dize için farklı türleri vardır.
1 - Bu hile (IMO) tehlikeli ve aptalca nedeni potansiyel olarak dize havuzu ile uygulamanızın diğer parçaları tarafından paylaşılan dizeleri değerleri etkiler. Bu kaos ... gelecek adam sizin kodu korumak izleme şansı şekillerde neden olabilir.
Java dize havuzu ne olduğunu ve nasıl ...
Satır başı ve yeni satır c bir dize so...
İfade "yeni bir Dize amacı ne (.....
Ekleme dize içinde yeni satır için?...
Bir dize işlemek ve boşluk ve yeni sat...