think of java 阅读之String

2018-12-02 21:59:04  卢浮宫  版权声明:本文为站长原创文章,转载请写明出处



一、前言

    简单看一下think of java 在看string时做以下笔记


二、关于String

    我们知道String是不可变得,StringBuffer是可变的,我们在使用String时经常会看到这样的代码

    String str = "aaa";

    String str2 = str.toUpperCase();

    还有      

    String  hello = "hello";

    String helloWorld = hello + "World";


三、到底有无改变

    看上面的代码,那么是不是String str 和 hello 改变了呢?答案是:并没有改变。

    这里简单说一下其工作原理。

        在第一个例子中:str2 在调用toUpCase() 时只是引用了str的值,编译器已经新创建了一个对象来保存新的String了。
        在第二个例子中:可以理解为编译器创建了一个StringBuilder对象用于构建最终的String对象,然后调用了StringBuilder的append()方法,
                       最后调用toString|()生成最 终的结果并保存为helloWorld。


四、思考

    既然编译器可以自动对我们的代码进行优化,那是不是说我们以后就直接用String而不需要使用StringBuffer了呢?

    在think of java 一书中给出了虚拟机运行的过程(参见 p284),可以得出结论:如果操作的字符串比较简单的时候可以使用String,

    但是在一些循环中使用toString()等方法时就会降低代码的健壮性。


五、后记

    下一篇文章会对String 、Stringbuffer 和 StirngBuilder 三个常用的字符串进行简单对比,欢迎进行查看并指正。

    以上文字参考think of java 对字符创的讲解,有不合适的地方可以评论。




更多精彩请关注guangmuhua.com


最新评论: