Java String concat() method. Learn concat() method in Java with example in java.lang.String package and its internal implementation. Learn about String class methods usage.
String concat() method in java with example:
concat() method is present in the java.lang.String class. concat() method concatenate the given string at a time. This method concatenates the specified string to the end of this string and returns a new string with the new value. This mehtod can be used to concatenate multiple strings one by one. This method can be called multiple times on the string.Syntax:
public String concat(String str)
Return value: String
A string that represents the concatenation of this object's characters followed by the string argument's characters.
In Java 8, a new method join() is introduced. String join() method example to concatenate the given string with a delimiter.
String concat() method example 1:
In this example, we will see how to concat the two strings.
package examples.java.w3schools.string; public class StringConcatExample { public static void main(String[] args) { String value1 = "java"; String value2 = "w3schools"; System.out.println("Value1 and value2 values before concatenating"); System.out.println("Value1 : " + value1); System.out.println("Value2 : " + value2); value2 = value1.concat(value2); System.out.println("Value2 after concatenating value1: " + value2); } }
Here, We can observe that new value2 is appended to value1 at end. Please refer the following output.
Output:
Value1 and value2 values before concatenating Value1 : java Value2 : w3schools Value2 after concatenating value1: javaw3schools
String concat() method example 2:
In example 2, We will see how to concat multiple strings at a time. Previously, we have seen how to add at the end of the string for a single string.
package examples.java.w3schools.string; public class StringConcatExample2 { public static void main(String[] args) { String string1 = "java"; String string2 = "-"; String string3 = "w3schools"; String string4 = " blog"; String finalString = string1.concat(string2).concat(string3).concat(string4); System.out.println("Concatenating multiple strings: " + finalString); } }
Output:
Concatenating multiple strings: java-w3schools blog
String concat() method example 3:
In example 3, We will learn how to concat a string in different way at the beginning of the string.public class StringConcatExample3 { public static void main(String[] args) { String string1 = "java-w3schools"; String finalString = "blogspot.com".concat(string1); System.out.println("Concatenating at begining of existing string: " + finalString); } }
Output:
Concatenating at begining of existing string: blogspot.comjava-w3schools
String concat() method example 4:
If the string2 length is ZERO then original string1 will be returned.String str3 = "hello"; String str4 = ""; str3 = str3.concat(str4); System.out.println("If second string length is 0: " + str3); System.out.println("str3.equals(str4) :: " + str3.equals(str4));
Output:
Concatenating at begining of existing string: blogspot.comjava-w3schools
String concat() method Internal Implementation:
We will see now how concat method is implemented internally or how concat works internally.
below is the internal code.
public String concat(String str) { int olen = str.length(); if (olen == 0) { return this; } if (coder() == str.coder()) { byte[] val = this.value; byte[] oval = str.value; int len = val.length + oval.length; byte[] buf = Arrays.copyOf(val, len); System.arraycopy(oval, 0, buf, val.length, oval.length); return new String(buf, coder); } int len = length(); byte[] buf = StringUTF16.newBytesFor(len + olen); getBytes(buf, 0, UTF16); str.getBytes(buf, len, UTF16); return new String(buf, UTF16); }
Steps:
Here are the steps performed internally for every time concat() method is invoked.
str1.concat(str2);
Remember: In java 8, String uses byte[] to store the characters (not char[] array).
1) Checks the length of str2. If str2 length is 0 then return str1.
2) Checks the coder value of both strings. Gets lengths of both strings.
Creating new byte array with new length.
newLength = str1.length() + str2.length();
Copying the values of str1 into new byte array using Arrays.copyOf(str1, newLength);
Then copying str2 into new byte array by using System.arraycopy(str2, 0, new array, str1.length, str2.length);
Retrun new byte array as string.
3) If coder values different then
Creats a new byte array using StringUTF16.newBytesFor(str1.length + str2.length)
loads the data into new byte array as per UTF16 format.
Retrun new byte array new String(buf, UTF16);
Please post your questions in comments section.
COMMENTS