Java String Copy

Sometime back I was asked how to copy a String in java. As we know that String is an immutable object, so we can just assign one string to another for copying it. If the original string value will change, it will not change the value of new String because of immutability.

Java String Copy

Here is a short java String copy program to show this behavior.

package com.journaldev.string;

public class JavaStringCopy {

	public static void main(String args[]) {
		String str = "abc";

		String strCopy = str;

		str = "def";
		System.out.println(strCopy); // prints "abc"

	}
}

Note that we can perform direct assignment of one variable to another for any immutable object. It’s not limited to just String objects. However, if you want to copy a mutable object to another variable, you should perform deep copy.

Java String Copy Alternate Methods

There are few functions too that can be used to copy string. However it’s not practical to use them when you can safely copy string using assignment operator.

  1. Using String.valueOf() method

    String strCopy = String.valueOf(str);
    
    String strCopy1 = String.valueOf(str.toCharArray(), 0, str.length()); //overkill*2
    
  2. Using String.copyValueOf() method, a total overkill but you can do it.

    String strCopy = String.copyValueOf(str.toCharArray());
    
    String strCopy1 = String.copyValueOf(str.toCharArray(), 0, str.length()); //overkill*2 
    

If you want to copy part of string to another string, then valueOf and copyValueOf methods are useful.

Source:
https://www.digitalocean.com/community/tutorials/java-string-copy