Stringhe concatenate in Java

Rupam Yadav 12 ottobre 2023
  1. L’operatore + può concatenare valori di più tipi, mentre concat() può concatenare solo valori stringa
  2. + Genera una nuova String se il valore è vuoto, mentre concat() restituisce lo stesso valore
  3. + Concatenerà null, mentre concat() genererà un’eccezione
  4. + Può concatenare più valori, mentre concat() può assumere un solo valore
Stringhe concatenate in Java

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-
Autore: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

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

Articolo correlato - Java String