SORU
27 Ocak 2014, PAZARTESİ


&; 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

  1. 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 tutar

    String a = "Hello World!"; Eğer String yaratıyorum ancak

    String 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 olarak String değişmez olarak kabul edilir neden başka bir nedeni var mıydı? Ya da yukarıda benim varsayım yanlış mı?

  2. 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
27 Ocak 2014, PAZARTESİ


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ciaran Blumenfeld

    Ciaran Blume

    20 NİSAN 2009
  • Louis C.K.

    Louis C.K.

    18 HAZİRAN 2006
  • Phlearn Photoshop and Photography Tutorials

    Phlearn Phot

    11 EKİM 2011