String 拼接一定会走 StringBuilder?

前言

最近在突然想到了String字符串拼接问题,于是做了一个demo测试了一下,到底String类型的字符串在拼接的时候,哪种情况下会走会走StringBulider进行字符串拼接,而哪种情况编译器会对代码进行优化?话不多说,先看demo

一.问题

案例1

可以发现,str == str2的结果为false,那么我们在看看下一个例子。

案例2

这时候,两个字符串对比的结果为true。

二.探究问题

这时候,疑问就来了,为什么结果会不一致呢?利用在cmd窗口输入javap -c TestDemo.class命令,对字节码文件进行反编译,发现了问题所在?

可以看到在案例1中,java代码底层走了StringBuilder,进行字符串拼接,然后调用了StringBuilder的toString方法。

而案例2中,对class文件进行反编译,发现代码出现了一点变化,并没有走StringBuilder进行字符串拼接。

三.总结

  1. 案例1中,通过变量和字符串拼接,java是需要先到内存找变量对应的值,才能进行完成字符串拼接的工作,这种方式java编译器没法优化,只能走StringBuilder进行拼接字符串,然后调用toString方法,当然返回的结果和常量池中的111这个字符串的内存地址是不一样的,因此结果为false。

  2. 案例2中,直接在表达式里写值,java不用根据变量去内存里找对应的值,可以在编译的时候直接对这个表达式进行优化,优化后的表达式从 "111" + "" 直接变成了 "111" ,两个String类型的变量都指向了常量池的111字符串,因此结果为true;

作者:叫我不矜持

(0)

相关推荐

  • java题型解答

    java题型解答

  • java中String str=""与new String()的区别

    常量池: 常量池(constant pool)指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据.它包括了关于类.方法.接口等中的常量,也包括字符串常量. 在常量池中存储字符串常量的 ...

  • 第七章Java基础类库

    Java学习笔记 第七章--Java基础类库 与用户互动 运行Java程序的参数 mian函数的方法签名如下: public static void main(String[] args){...} ...

  • Java字符串详解

    字符串即字符的组合,在Java中,字符串是一个类,所以我们见到的字符串都是对象. 常见创建字符串手段: 每当有一个字面值出现的时候,JVM虚拟机就会创建一个字符串 调用String的构造方法创建一个字 ...

  • Java基础语法(总结篇)

    关键字&标识符 关键字的概念与特征 概念:Java关键字是事先定义好的对Java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名.方法名.类名.包名和 ...

  • Java入门基础知识点梳理

    摘要: 虽然已经在实际工作中与java打交道5年之多,但是一直没系统地对java这门语言进行梳理和总结,掌握的知识也比较零散.恰好利用这段时间重新认识下java,并对一些常见的语法和知识点做个总结与回 ...

  • 第387篇:我们一定会走出沼泽的

    时间的齿轮, 马不停蹄地旋转. 人生的脚步, 一刻不歇地奔赶. 生肖新轮回, 鼠年又如约而至. 无论, 此刻的你, 是喜,是忧, 是欢腾,是恐慌, 黑夜,依然会降临, 曙光,也一定会再现. 请坚信, ...

  • 这种路口,老司机都不一定会走

    这些多岔路口该怎么走?

  • 我一定会带着孩子再走一趟川藏线,感受祖国的力量

    写在前面:今日行程芒康-东达山-左贡-邦达-天路72拐-八宿 从芒康出发,我们的行程继续向西,今天的车程比昨天少了2个小时左右.这一路走来感慨颇多,芒康出来后不久就到了拉乌山的观景台.观景台建得挺漂亮 ...

  • 人性都是有铁律的,了解这些铁律,一定会让你少吃亏,走的更远!

    人性都是有铁律的,了解这些铁律,一定会让你少吃亏,走的更远!

  • 当你陷入这2种思维陷阱走不出来时,最后一定会被女生判死刑!

    凡事都有解 导语: 你有没有如下问题: 1.你约女生出来,女生说不方便,你会解读为对方这是不喜欢你 2.女生跟你说我们还是做朋友比较好,你就会认为这是"婉拒" 3.一开始跟女生交往 ...

  • 走丢的人,一定会回来

    春天还没到来,我已迫不及待, 雾凇的树枝很美,与盛夏一样漂亮 想起春天时在丛中的样子, 一跳,枝头的花瓣就落了下来 偶遇一只雪地里的狐, 独来独往是她的孤独, 偶然遇见 就一起跳个舞 如果无人 就自己 ...

  • 路,一定会越走越宽的。

    生命的道路在眼前渐次展开,需要我们亲手调试它的方向,并接受所有可能的后果. 01  新的项目正在紧张的筹备当中,好像是机电安装工程,把萧遥安排在了暖通组.让一个学土木的研究生去干暖通专业,感觉完全不搭 ...

  • 香椿上市,你还真不一定会吃!今天带你实验走起

      早春,正是香椿上市的季节.香椿又名椿芽.香椿头等,被称为"树上的蔬菜",具有脆嫩.鲜绿.浓香等特点,且富含营养物质,是制作香椿炒鸡蛋.香椿拌豆腐.干炸香椿肉丸等美味菜肴的主要食 ...

  • 刘雯穿拼接设计的牛仔大衣潇洒走机场,魅力四射,不愧是国际超模

    有的时尚元素经过时间的洗礼依然很神奇的存在,比如说一些很经典的花纹,经过10年甚至20年依然备受欢迎,再比如比较经典的牛仔服装,也许有的人会认为已经过时了,真正懂时尚穿搭的人却很轻松地把别人认为烂大街 ...