// Tutorial //

Java String Copy

Published on August 3, 2022
Default avatar
By Pankaj
Developer and author at DigitalOcean.
Java String Copy

While we believe that this content benefits our community, we have not yet thoroughly reviewed it. If you have any suggestions for improvements, please let us know by clicking the “report an issue“ button at the bottom of the tutorial.

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.

If you’ve enjoyed this tutorial and our broader community, consider checking out our DigitalOcean products which can also help you achieve your development goals.

Learn more here


About the authors
Default avatar
Pankaj

author

Developer and author at DigitalOcean.

Still looking for an answer?

Was this helpful?

At least in Java 11 (I believe this has been true for a lot longer than that), `String.valueOf(str)` will return the same instance of `str`, so it’s functionally identical to directly assigning the reference. In String.java: public String toString() { return this; } public static String valueOf(Object obj) { return (obj == null ? “null” : obj.toString(); } When obj is a String, String.toString() is called, and this returns the string itself and not a copy. If you want a full copy of the original string, you’ll need to use the String constructor or any of the other methods you listed.

- Kiefer