Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara String Pool, Metodo Equals() | Stringa
Basi di Java

bookString Pool, Metodo Equals()

Il metodo equals()

Questo metodo viene utilizzato per confrontare oggetti ed è comunemente usato con oggetti String. Esaminiamo un esempio di creazione di due variabili stringa identiche e del loro confronto utilizzando ==:

Main.java

Main.java

copy
123456789
package com.example; public class Main { public static void main(String[] args) { String first = new String("string"); String second = new String("string"); System.out.println(first == second); } }

Il risultato è false perché == confronta i riferimenti agli oggetti, non i loro valori effettivi. Anche se entrambe le stringhe contengono "string", sono oggetti diversi in memoria e sono creati al di fuori dello String pool.

String pool

Lo String Pool è una parte della memoria heap dove vengono memorizzati i letterali stringa. Quando si creano stringhe con lo stesso valore utilizzando i letterali, esse fanno riferimento allo stesso oggetto in memoria.

Perché abbiamo ottenuto false? Perché abbiamo aggirato lo string pool utilizzando new String("string"), che crea un nuovo oggetto in memoria. Utilizzando invece String first = "string";, la stringa viene inserita nello string pool e può essere condivisa.

Vediamo un esempio di codice:

Main.java

Main.java

copy
1234567891011
package com.example; public class Main { public static void main(String[] args) { String first = "string"; String second = "string"; String third = new String("string"); System.out.println("Result of comparing first and second: " + (first == second)); System.out.println("Result of comparing first and third: " + (first == third)); } }

Considerare un diagramma che spiega come funziona e quali oggetti si trovano nello String Pool.

Come si confrontano i valori delle stringhe nello String Pool e quelli esterni ad esso? A questo scopo, Java fornisce il metodo equals, che confronta i valori degli oggetti String invece dei loro riferimenti. Considerare un esempio di codice in cui si confrontano le stringhe utilizzando il metodo equals invece di ==.

Main.java

Main.java

copy
1234567891011
package com.example; public class Main { public static void main(String[] args) { String first = "string"; String second = "string"; String third = new String("string"); System.out.println("Result of comparing first and second: " + (first.equals(second))); System.out.println("Result of comparing first and third: " + (first.equals(third))); } }

Ora possiamo vedere che abbiamo il confronto corretto.

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 5. Capitolo 7

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

bookString Pool, Metodo Equals()

Scorri per mostrare il menu

Il metodo equals()

Questo metodo viene utilizzato per confrontare oggetti ed è comunemente usato con oggetti String. Esaminiamo un esempio di creazione di due variabili stringa identiche e del loro confronto utilizzando ==:

Main.java

Main.java

copy
123456789
package com.example; public class Main { public static void main(String[] args) { String first = new String("string"); String second = new String("string"); System.out.println(first == second); } }

Il risultato è false perché == confronta i riferimenti agli oggetti, non i loro valori effettivi. Anche se entrambe le stringhe contengono "string", sono oggetti diversi in memoria e sono creati al di fuori dello String pool.

String pool

Lo String Pool è una parte della memoria heap dove vengono memorizzati i letterali stringa. Quando si creano stringhe con lo stesso valore utilizzando i letterali, esse fanno riferimento allo stesso oggetto in memoria.

Perché abbiamo ottenuto false? Perché abbiamo aggirato lo string pool utilizzando new String("string"), che crea un nuovo oggetto in memoria. Utilizzando invece String first = "string";, la stringa viene inserita nello string pool e può essere condivisa.

Vediamo un esempio di codice:

Main.java

Main.java

copy
1234567891011
package com.example; public class Main { public static void main(String[] args) { String first = "string"; String second = "string"; String third = new String("string"); System.out.println("Result of comparing first and second: " + (first == second)); System.out.println("Result of comparing first and third: " + (first == third)); } }

Considerare un diagramma che spiega come funziona e quali oggetti si trovano nello String Pool.

Come si confrontano i valori delle stringhe nello String Pool e quelli esterni ad esso? A questo scopo, Java fornisce il metodo equals, che confronta i valori degli oggetti String invece dei loro riferimenti. Considerare un esempio di codice in cui si confrontano le stringhe utilizzando il metodo equals invece di ==.

Main.java

Main.java

copy
1234567891011
package com.example; public class Main { public static void main(String[] args) { String first = "string"; String second = "string"; String third = new String("string"); System.out.println("Result of comparing first and second: " + (first.equals(second))); System.out.println("Result of comparing first and third: " + (first.equals(third))); } }

Ora possiamo vedere che abbiamo il confronto corretto.

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 5. Capitolo 7
some-alt