JavaScript konusunda emin değilim, ancak Java'da dizeler "Dize Sabit Havuzu" ile değişmezliğe ek bir adım atıyor. Dizeler, dize değişmezleri ( "foo") veya bir Stringsınıf yapıcısı ile oluşturulabilir. Dize değişmezleri ile oluşturulan dizeler, Dize Sabit Havuzunun bir parçasıdır ve aynı dize değişmezi her zaman havuzdaki aynı bellek adresi olacaktır.
Misal:
String lit1 = "foo";
String lit2 = "foo";
String cons = new String("foo");
System.out.println(lit1 == lit2); // true
System.out.println(lit1 == cons); // false
System.out.println(lit1.equals(cons)); // true
Yukarıdaki her iki lit1ve lit2aynı dize kullanarak inşa edilir onlar böylece aynı bellek adresinde ediyoruz işaret; lit1 == lit2sonuçlanırtrue , çünkü bunlar tamamen aynı nesnelerdir.
Ancak, conssınıf yapıcısı kullanılarak oluşturulur. Parametre aynı dize sabiti olmasına rağmen, kurucu için yeni bellek ayırır; bu cons, aynı verileri içermesine rağmen ve ile consaynı nesne değildir .lit1lit2
Elbette, üç dizenin tümü aynı karakter verilerini içerdiğinden, equalsyöntemi kullanmak doğru döndürür.
(Elbette her iki tür ip yapımı da değişmezdir)