Warum liefert meine assert-Anweisung kein Ergebnis? Ich denke, die erste Assert-Anweisung sollte fehlschlagen, aber ich sehe nichts auf Eclipse angezeigt.Java-Assertion-Fehler löst keinen Fehler aus
Ich verwende Eclipse, um dieses Programm auszuführen.
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");
}
}
auf das zu erarbeiten, können Sie den '' == Operator verstehen, wie es die folgende Frage beantwortet: der Verweis auf dieses Objekt verweist auf den gleichen Bezug dieses anderen Objekts ? sind diese 2 Leute im gleichen Speicherstück zugeordnet, was nur wahr ist, wenn es 1 und nur 1 Instanz eines solchen Objekts im gesamten Kontext Ihrer Anwendung (Singleton) gibt. Mit anderen Worten ist eine Instanz eines Objekts nur '==' zu sich selbst. Da Sie es mit einer anderen Instanz vergleichen, die den gleichen Wert enthält, müssen Sie die Gleichheits-Methode verwenden, wie oben angegeben. – VallaDanger
Wenn Sie '' sagen (s == "test") 'erstellen Sie tatsächlich eine neue Instanz von String mit dem Wert' test', also fragen Sie, ob diese neue Instanz '==' zu 's' absolut nicht wahr ist 'es sei denn, Sie verwenden die' String.intern() 'Methode, die sicherstellt, dass alle Zeichenfolgen mit denselben Werten denselben Speicher teilen. Es gibt tatsächlich viel mehr über Gleichheit der Objekte zu wissen, Grund, warum ich empfehlen würde, effektive Java (2. Auflage, Kapitel 3, Punkt 8) eine Chance zu geben. – VallaDanger