String关键字

关于String和new String()见我写的前一篇博客 String和new String()的区别

 

1、String的"+"运算

a、String str = "a" + "b" 字符串常量的直接相加。在编译阶段会生成一个新的字符串"ab",运行时会在字符串常量池中新建"ab"并把字符串str引用直接指向常量池中的"ab"

 

 

左边是.java源文件 右边是.class文件反编译之后

可以明显看出去 在编译阶段字符串"a" + "b"直接组合成"ab" 他们会指向字符串常量池中的同一地址。所以结果是true 

b、String str = new String("a") + new String ("b")

和String str1 = "a";String str2 = "b";String str = str1+str2;

这两种情况字符串对象的相加,jvm会生成一个新的stringBuilder对象进行append操作,返回的是新对象,所以是false。

 

 

posted @ 2019-02-28 10:31  Leon_W  阅读(551)  评论(0编辑  收藏  举报