Testuję sobie String poola na takim kodzie obecnie:
String abc = "abc";
String zm1 = "abc" + "d";
String zm2 = abc + "d";
String zm3 = "abcd";
String zm4 = new String("abcd");
String zm5 = new String(zm3);
String aaa = abc + "d";
System.out.println("zm1 == zm2 : " + (zm1 == zm2) );
System.out.println("zm1 == zm3 : " + (zm1 == zm3) );
System.out.println("zm1 == zm4 : " + (zm1 == zm4) );
System.out.println("zm2 == zm3 : " + (zm2 == zm3) );
System.out.println("zm2 == zm4 : " + (zm2 == zm4) );
System.out.println("zm3 == zm4 : " + (zm3 == zm4) );
System.out.println("zm3 == zm5 : " + (zm3 == zm5) );
System.out.println("zm3 == zm5 : " + (zm4 == zm5) );
System.out.println("zm2 == aaa : " + (zm2 == aaa) );
Z takim wynikiem :
zm1 == zm2 : false
zm1 == zm3 : true
zm1 == zm4 : false
zm2 == zm3 : false
zm2 == zm4 : false
zm3 == zm4 : false
zm3 == zm5 : false
zm3 == zm5 : false
zm2 == aaa : false
Nie rozumiem czemu tylko w przypadkuzm1 == zm3
otrzymuję true
, tylko w tym przykładzie działa String pool? Czemu np. w przypadkuzm2 == zm3
wyrzuca mi ```
false
Trochę szukałem w sieci [tutaj](http://javastart.pl/static/klasy/string-stringbuffer-i-stringbuilder/) i wiem, że zapis ```
String zm1 = "abc" + "d";
``` da mi zapis ```
String zm1 = new StringBuilder(abc).append("d").toString();
``` Ale dalej nie rozumiem czemu mam tyle wyników ```
false
```.