SORU
15 AĞUSTOS 2011, PAZARTESİ


() stajyer farklı ve Java 7 Java 6 davranıyor

class Test {
    public static void main(String...args) {
        String s1 = "Good";
        s1 = s1   "morning";
        System.out.println(s1.intern());
        String s2 = "Goodmorning";
        if (s1 == s2) {
            System.out.println("both are equal");
        }
    }
}

Bu kod ve Java 7 Java 6 farklı çıktılar üretir. Java 6 s1==s2 koşul false döner ve Java 7 s1==s2 döner 6**. Neden?

Neden bu program ve Java 7 Java 6 farklı çıktı oluşturur mu?

CEVAP
17 AĞUSTOS 2011, ÇARŞAMBA


Daha önce olduğu gibi farklı bir şekilde JDK7 işlem stajyer gibi görünüyor.
Build 1.7.0-b147 ile test ettim ve aldım "iki eşit" yürütürken, ama (aynı bayt) 1,6.0_24 mesajı alamadım.
Ayrıca String b2 =... satır kaynak kod içinde bulunduğu değişir. Aşağıdaki kodu da mesaj çıktı:

class Test {
   public static void main(String... args) {
      String s1 = "Good";
      s1 = s1   "morning";

      String s2 = "Goodmorning";
      System.out.println(s1.intern());  //just changed here s1.intern() and the if condition runs true   

      if(s1 == s2) {
         System.out.println("both are equal");
      } //now it works.
   }
}

dizeleri ekler gerçek örneği havuza s1 kendi havuzu Dize bulma sonra intern gibi görünüyor. JVM s2 oluşturulduğunda bu havuzu kullanıyor, s1 aynı referans geri alır. Eğer s2 ilk oluşturulursa diğer taraftan, başvuru havuzunda saklanır.
Bu staj Dizeleri Java yığın kalıcı nesil hareket sonucu olabilir.

Burada bulundu: Important RFEs Addressed in JDK 7

İçinde yapışkan notlar 7, staj dizeleri artık ayrılan daimi nesil Java yığın, ama bunun yerine tahsis edilen ana bölümü Java yığın (olarak bilinen, genç ve yaşlı nesiller) ile birlikte diğer nesneler tarafından oluşturulan bir uygulama. Bu değişiklik, daha fazla veri, ana Java yığın ikamet eden neden olur ve kalıcı bir nesil, ve böylece daha az veri yığın boyutları ayarlanması gerekebilir. Çoğu uygulama sadece yığın kullanımı bu değişiklik nedeniyle nispeten küçük farklılıklar, ama daha büyük uygulamalar bu yükü daha fazla ders görmek veya Dize ağır faydalanmak.() stajyer yöntem daha önemli farklılıklar göreceksiniz.

Eğer bu bir hata ise ve hangi sürümünden emin değilim... İDEA Birleşik Devletleri 3.10.5

Açıkça hesaplanmış bir dize staj sonucu aynı içeriği ile önceden var olan herhangi bir hazır bilgi dizesi olarak aynı dize.

çok soru önceden varolan yorumlanması, derleme veya çalıştırma zamanı: "Günaydın" önceden var olan ya da yok mu?
7... önce uygulanmıştır yolu tercih ederim

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • eHow

    eHow

    27 NİSAN 2006
  • MagicofRahat

    MagicofRahat

    13 Temmuz 2007
  • metagamers

    metagamers

    13 Mayıs 2006