Dlaczego moja instrukcja "assert" nie daje wyniku? Myślę, że pierwsze oświadczenie assert powinno zawieść, ale nie widzę niczego wyświetlanego w Eclipse.Błąd asercji Java nie powoduje błędu
Używam Eclipse do uruchomienia tego programu.
package java.first;
public class test {
public static void main(String[] args) throws Exception {
String s = "test1";
assert (s == "test");
s = "test";
assert (s == "test");
}
}
opracowania na ten temat, można zrozumieć, operator '==' jakby odpowiedzi na następujące pytanie: odniesienie do tego obiektu punktach do tego samego odniesienia do tego innego obiektu ? są to 2 faceci przydzielone w tym samym kawałku pamięci, co jest prawdą tylko wtedy, gdy istnieje 1 i tylko 1 przypadek takiego obiektu w całym kontekście aplikacji (singleton). Innymi słowy instancja obiektu jest tylko '==' dla siebie. Ponieważ porównujesz to z inną instancją, która ma tę samą wartość, musisz użyć metody 'equals' jak podano powyżej. – VallaDanger
Kiedy mówisz '(s ==" test ")' faktycznie tworzysz nową instancję String z wartością 'test', więc pytasz, czy ta nowa instancja jest' == 'do' s' jest absolutnie nie jest prawdą 'chyba że użyjesz metody' String.intern() ', która zapewni, że wszystkie łańcuchy o tych samych wartościach współużytkują tę samą pamięć. Istnieje wiele więcej informacji na temat równości obiektów, powód, dla którego zaleciłbym, aby skuteczna wersja Java (wydanie 2, rozdział 3, pozycja 8) była szansą. – VallaDanger