wszystkim I pojawił się kolejny problem gdy napisać poniższy kodzamieszanie o java String dosłownym basenem i konkatenacji STRING
String hello = "Hello";
String str5 = "Hel" + "lo";
String str8 = "Hel";
String str9 = "lo";
String str10 = str8 + str9;
System.out.println("str10==hello?" + (str10 == hello));
System.out.println("str5==hello?" + (str5 == hello));
System.out.println("str10==str5?" + (str10 == str5));
potem uruchomić mój kod i wydrukować konsoli to
str10 == hello ? false
str5 == hello ? true
str10 == str5 ? false
to bardzo mnie zdezorientowało. dlaczego drugi druk TRUE, ale pierwszy wydruk FALSE ?? w moim zrozumieniu puli literowej String, gdy zdefiniowany łańcuch i JVM sprawdzi, czy pula zawiera ten ciąg, jeśli nie, umieść ciąg w puli.
w moim kodu, zmienna cześć istnieje w basenie smyczkowy”Helo«i»lo«również w basenie, moje pytanie jest
- jeśli wynik konkatenacji»Helo "i" lo "istnieje w puli.
- jaka jest różnica między definicją str5 a str10s i dlaczego nie są "=="? ? Nie STR5 i str10 odnoszą się do mówią jest "Witam”, że w basenie String («==» wydaje się oznaczać odniesienia jest taki sam przedmiot)
moja wersja JDK: 1.6.0_29
mój IDE: IntelliJ IDEA 11,2
ktoś może wskazać ją bardzo dziękuję
dziękuję!to mi bardzo pomaga – fuye