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.
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.
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.
Using String.valueOf()
method
String strCopy = String.valueOf(str);
String strCopy1 = String.valueOf(str.toCharArray(), 0, str.length()); //overkill*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.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
Java and Python Developer for 20+ years, Open Source Enthusiast, Founder of https://www.askpython.com/, https://www.linuxfordevices.com/, and JournalDev.com (acquired by DigitalOcean). Passionate about writing technical articles and sharing knowledge with others. Love Java, Python, Unix and related technologies. Follow my X @PankajWebDev
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
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.
Full documentation for every DigitalOcean product.
The Wave has everything you need to know about building a business, from raising funding to marketing your product.
Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.
New accounts only. By submitting your email you agree to our Privacy Policy
Scale up as you grow — whether you're running one virtual machine or ten thousand.
Sign up and get $200 in credit for your first 60 days with DigitalOcean.*
*This promotional offer applies to new accounts only.