Stringhe concatenate in Java
-
L’operatore
+
può concatenare valori di più tipi, mentreconcat()
può concatenare solo valoristringa
-
+
Genera una nuovaString
se il valore è vuoto, mentreconcat()
restituisce lo stesso valore -
+
Concatenerànull
, mentreconcat()
genererà un’eccezione -
+
Può concatenare più valori, mentreconcat()
può assumere un solo valore
Oggi esamineremo le differenze tra concat()
e l’operatore +
. Entrambi sono usati per concatenare le stringhe
, ma siamo qui per scoprire cosa le rende diverse l’una dall’altra.
L’operatore +
può concatenare valori di più tipi, mentre concat()
può concatenare solo valori stringa
La prima grande differenza tra +
e concat()
è che possiamo concatenare più tipi di dati con una stringa
usando l’operatore +
, ma il metodo concat()
è limitato a prendere solo un valore di tipo String
.
Se guardiamo sotto il cofano, ogni valore di qualsiasi tipo di dati viene convertito in una String
usando il metodo toString()
quando uniamo i valori usando +
.
L’esempio sotto mostra che possiamo unire un int b
a una String a
. Ma se proviamo questo su concat()
, darà un errore di runtime in quanto non può accettare un valore di tipo int
.
package com.company;
public class Main {
public static void main(String[] args) {
String a = "String A-";
int b = 5;
System.out.println(a + b);
}
}
Produzione:
String A-5
+
Genera una nuova String
se il valore è vuoto, mentre concat()
restituisce lo stesso valore
La prossima grande differenza da annotare è che il +
creerà una nuova Stringa
ogni volta che ottiene un valore, anche se la sua lunghezza è zero. Ma concat()
genera una nuova stringa solo quando rileva che la lunghezza del valore è maggiore di zero.
Questo può cambiare molto il risultato se vogliamo confrontare due stringhe, come abbiamo fatto di seguito. Il primo confronto viene fatto quando la stringa viene concatenata usando concat()
, mentre il secondo confronto mostra il risultato del confronto di due stringhe concatenate da +
.
package com.company;
public class Main {
public static void main(String[] args) {
String a = "String A";
String b = "";
String d = a.concat(b);
if (d == a) {
System.out.println("String d and a are equal using concat");
} else {
System.out.println("String d and a are NOT equal using concat");
}
String e = a + b;
if (e == a) {
System.out.println("String e and a are equal using plus operator");
} else {
System.out.println("String e and a are NOT equal plus operator");
}
}
}
Produzione:
String d and a are equal using concat
String e and a are NOT equal plus operator
+
Concatenerà null
, mentre concat()
genererà un’eccezione
Nell’esempio seguente, possiamo vedere che se inizializziamo la variabile b
con null
, si concatenerà comunque senza errori. Succede perché l’operatore +
converte ogni valore in String
e poi li unisce.
package com.company;
public class Main {
public static void main(String[] args) {
String a = "String A-";
String b = null;
System.out.println(a + b);
}
}
Produzione:
String A-null
A differenza di +
quando concateniamo b
, che contiene null
in a
, lancerà una NullPointerException
, che è l’output corretto in generale.
package com.company;
public class Main {
public static void main(String[] args) {
String a = "String A-";
String b = null;
System.out.println(a.concat(b));
}
}
Produzione:
Exception in thread "main" java.lang.NullPointerException
at java.base/java.lang.String.concat(String.java:1937)
at com.company.Main.main(Main.java:14)
+
Può concatenare più valori, mentre concat()
può assumere un solo valore
L’operatore +
può unire più valori come nell’esempio seguente. Tuttavia, poiché la funzione concat()
richiede un solo argomento, non può concatenare più di due valori.
package com.company;
public class Main {
public static void main(String[] args) {
String a = "String A-";
String b = "String B-";
String c = "String C";
System.out.println(a + b + c);
System.out.println(a.concat(b));
}
}
Produzione:
String A-String B-String C
String A-String B-
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn