Java SE 1.6

0

Witam, jaka jest różnica między

String s = "a";

a

String s = new String("a");

?
Jakaś różnica tam jest, bo jak porównam przy wykorzystaniu equals albo zwykłym operatorem równości == to zwraca wartość false. Za uprzejme zaspokojenie mojej upierdliwej ciekawości z góry dziękuję ;)

0

"a" znajdzie się w puli Stringów dla danego pliku .class. Jeżeli masz wiele zmiennych w jednym pliku zainicjalizowanych tym samym Stringiem, tzn:

String a1 = "a";
String a2 = "a";

Wtedy operator == powinien dla nich zwrócić true, bo to referencje do tego samego Stringa. Z drugiej strony za pomocą zapisu:

String s = new String("a");

Wymuszasz stworzenie nowego Stringa, obojętne czy był już w puli czy nie.

Ogólnie nie wolno porównywać Stringów za pomocą operatora ==. Gdyby mój (współ)pracownik w ten sposób porównywał Stringi (albo jakiekolwiek inne obiekty) to podziękował bym mu za współpracę. String.equals() to jedyna metoda do sprawdzania identyczności Stringów.

0

No tak, jedynie typy podstawowe można porównywać w ten sposób. Dzięki za odpowiedź :)
P.S. Ja bym gościowi kazał wszystko poprawić i zmienić nawyk ;) Why so serious?

0

Właśnie dlatego brakuje mi przeładowania operatorów w javie, o ile byłoby to wygodniejsze, móc napisać swój własny operator==

0
Wibowit napisał(a)

String.equals() to jedyna metoda do sprawdzania identyczności Stringów.

Czyzby? ;)

[hint: graf dziedziczenia]

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0