Java String concatenatie is een bewerking om twee of meer strings samen te voegen en een nieuwe terug te geven. Ook kan de aaneenschakelingsbewerking worden gebruikt om typen naar tekenreeksen te casten. U kunt op twee verschillende manieren tekenreeksen in Java samenvoegen.

concat() methode

De methode Concat() voegt de opgegeven tekenreeks toe aan het einde van de gegeven tekenreeks en retourneert vervolgens en retourneert vervolgens een nieuwe gevormde tekenreeks. Natuurlijk kunnen we de methode concat() gebruiken om drie of meer strings samen te voegen.

De handtekening van de concat() methode


public String concat(String str)
De methode voegt de string str aan het einde van de huidige string samen. Bijvoorbeeld:

String s1 = “Hello ”; 
s1.concat("World")
retourneert een nieuwe tekenreeks "Hello World".

Voorbeeld van de Concat()-methode

Laten we twee strings samenvoegen na hun initialisatie, en dan meer strings samenvoegen. En nog een interessant voorbeeld: we gaan een methode maken die verschillende berichten zou retourneren op basis van argumenten.

public class ConcatTest {

    public static void main(String[] args) {
        //String concat with concat() method 
        String string1 = "I learn ";
        String string2 = "concatenation in Java";
        //here we use concat() method to join the two strings above
        String result = string1.concat(string2);
        System.out.println(result);
        //concat() method to join 4 strings
        String myWebSite = "Code".concat("Gym").concat(".cc").concat("/quest");
        System.out.println(myWebSite); // here we've got  "CodeGym.cc/quest"

        System.out.println(myMessage(true));
        System.out.println(myMessage(false));
    }

    private static String myMessage(boolean b) {   //concat() method with selection statement 
        return "I have".concat(b ? " " : "n't ").concat("got it");
    }

}
De uitvoer is:
Ik leer aaneenschakeling in Java CodeGym.cc/quest Ik heb het Ik heb het niet
Het is belangrijk om te weten dat de methode concat() de string niet verandert, maar een nieuwe maakt als resultaat van het samenvoegen van de huidige en de string die als parameter is doorgegeven. Dus de methode retourneert een nieuw String- object, daarom kun je zulke lange ketens van String concat maken.

Aaneenschakeling met overbelaste operators "+" en "+="

U kunt deze twee operatoren op dezelfde manier gebruiken als bij getallen. Ze werken net als concat() . Laten we de string "Code" en string "Gym" samenvoegen.

public class StringConcat {
   public static void main(String[] args) {

       String myString = "Code" + "Gym";
       myString+= ".cc";
       System.out.println(myString);
   }
}
Gewoonlijk staat Java geen overbelastingsbewerkingen toe voor gebruikersklassen, maar deze twee operators werken als overbelast. Je zou kunnen denken dat binnen de + operator concat() verborgen zit , maar in feite wordt hier een ander mechanisme gebruikt. Als we naar de bytecode van het Java-programma kijken, zien we dat StringBuilder is gemaakt en dat de methode append() wordt gebruikt. De Java-compiler ziet de "+"-operator en realiseert zich dat operanden strings zijn, geen primitieve typen. Dus het werkt als concat.

public class StringTest2 {

   public static void main(String[] args) {

       String hello = "hello";
       String world = " world!";

       String helloworld = (new StringBuilder().append(hello).append(world).toString());
       System.out.println(helloworld);
       //this is the same as:
       String result = hello + world;
   }
}

Concat(0) of + ?

Gebruik de methode concat() als u tekenreeksen slechts één keer hoeft samen te voegen . Voor alle andere gevallen is het beter om de operator + of Stringbuffer / StringBuilder te gebruiken. Ook wordt de + operator gebruikt om typen te converteren. Als een van de operanden gelijk is, bijvoorbeeld het nummer en de tweede een string is, dan krijgen we bij de uitgang een string. Voorbeeld:

public class StringConcat {
   public static void main(String[] args) {
       int myInt = 5;
       String myString = " days";

       System.out.println(myInt + myString);
       boolean b = (myInt + myString) instanceof String;
       System.out.println(b);
   }
}
We gebruikten instanceof om te controleren of (myInt + myString) een string is. Hier is de uitvoer van dit programma:
5 dagen waar
Merk ook op dat de + operator en concat() anders werken als een van de strings null is. Als een van de operanden bij gebruik van de + of += operator slechts één — een string is, dan vindt er, zoals we al zeiden, typeconversie plaats. Hetzelfde geldt voor nul. We krijgen gewoon een nieuwe string:

public class StringConcat {
   public static void main(String[] args) {

       String myString = "book ";
       System.out.println(myString + null);
       System.out.println((myString + null) instanceof String);
   }
}
De uitvoer is:
boek null waar
Als we de methode concat() toepassen voor dezelfde bewerking, krijgen we een NullPointerException .

public class StringConcat {
   public static void main(String[] args) {

       String myString = "book ";
       System.out.println(myString.concat(null));

   }
}
De uitvoer is:
Uitzondering in thread "main" java.lang.NullPointerException op java.base/java.lang.String.concat(String.java:1972) op StringConcat.main(StringConcat.java:6)