当前位置:  开发笔记 > 编程语言 > 正文

Java字符串不可变

如何解决《Java字符串不可变》经验,为你挑选了1个好方法。

我在想java中的字符串.字符串是不可变的.但是当代码是可变的时候

String str = new String("abc");
System.out.println(str.toUpperCase());
System.out.println(str);

外出是

ABC
abc

实际上输出应该是

ABC
ABC

因为String是不可变的.请解释.谢谢!



1> Jon Skeet..:

不,输出正是因为字符串是不可变的.调用toUpperCase()不会更改现有字符串的内容,它会创建一个新字符串并返回对该字符串的引用... 由于字符串是不可变的,它必须这样做.

这不仅仅是这种情况toUpperCase()- 所有关于String声音的方法都可能会修改字符串(例如trim())实际上返回一个新的方法.

相比之下,与所述可变的StringBuilder,其中,所述对象修改,并且到基准this返回:

public class Test {
    public static void main(String[] args) throws Exception {
        StringBuilder builder = new StringBuilder("abc");
        System.out.println(builder); // abc
        System.out.println(builder.append("def")); // abcdef
        System.out.println(builder); // abcdef
    }
}

推荐阅读
yzh148448
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有