Perché la mia affermazione non fornisce alcun risultato? Penso che la prima affermazione di asserzione dovrebbe fallire, ma non vedo nulla che venga visualizzato su Eclipse.Errore di asserzione Java non genera errore
Sto usando Eclipse per eseguire questo programma.
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");
}
}
di elaborare su questo, si può capire l'operatore '==' come esso risponde alla seguente domanda: il riferimento a questi punti di oggetto per lo stesso riferimento di questo altro oggetto ? sono questi 2 ragazzi allocati nello stesso blocco di memoria, che è vero solo se esiste 1 e solo 1 istanza di tale oggetto nell'intero contesto dell'applicazione (singleton). In altre parole, un'istanza di un oggetto è solo '==' a se stessa. Dato che lo si confronta con un'altra istanza che contiene lo stesso valore, è necessario utilizzare 'equals'method come indicato sopra. – VallaDanger
quando dici '(s ==" test ")' stai creando una nuova istanza di String con il valore 'test', quindi chiedere se la nuova istanza è' == 'a' s' non è assolutamente 'true 'a meno che non si usi il metodo' String.intern() 'che assicurerà che tutte le stringhe aventi gli stessi valori condividano la stessa memoria. C'è ancora molto da sapere sull'uguaglianza degli oggetti, motivo per cui consiglierei di dare un'efficace versione di Java (2a edizione, capitolo 3, elemento 8). – VallaDanger