专栏首页蛮三刀的后端开发专栏【JAVA】java字符串拼接

【JAVA】java字符串拼接

收录自百度知道,源地址http://zhidao.baidu.com/question/91987218.html
问:
String a = "test";
String b="3";
String c=a+b;
String d="test"+"3";
请问c和d是否指向的是同一个对象"test3",为什么?
答:
不是指向同一个对象的。

假设再有个语句,String e = "test3";因为String是final的,不可修改,所以可以把e看成常量。
当再遇到String d="test"+"3"时,编译器在这里做了优化,把这条语句优化为String d="test3",由于存在一个相同的对象e,所以d也指向了e.
所以d、e是同一个对象。

而编译器在处理String c=a+b时,认为是两个变量相加,不会做优化。所以c,d不是同一个对象。

如果将a,b定义为
final String a = "test";
final String b="3"; 
这时String c=a+b就变成了常量相加,所以编译器会对其进行优化,即这时c,d就相等了

ps:推荐楼主一本书《深入java虚拟机》,对java的底层机制有很好的介绍。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【秒杀系统】零基础上手秒杀系统(三):抢购接口隐藏 + 单用户限制频率

    本文是秒杀系统的第三篇,通过实际代码讲解,帮助你了解秒杀系统设计的关键点,上手实际项目。

    后端技术漫谈
  • 【秒杀系统】零基础上手秒杀系统(三):抢购接口隐藏 + 单用户限制频率

    本文是秒杀系统的第三篇,通过实际代码讲解,帮助你了解秒杀系统设计的关键点,上手实际项目。

    后端技术漫谈
  • 海量数据处理问题知识点复习手册

    https://blog.csdn.net/v_july_v/article/details/6279498

    后端技术漫谈
  • JVM系列之:String.intern和stringTable

    StringTable是什么?它和String.intern有什么关系呢?在字符串对象的创建过程中,StringTable有起到了什么作用呢?

    程序那些事
  • 微信公众号H5支付遇到的那些坑

    官方文档说的很清楚,商户已有H5商城网站,用户通过消息或扫描二维码在微信内打开网页时,可以调用微信支付完成下单购买的流程。

    小柒2012
  • 微信公众号H5支付遇到的那些坑

    简史 官方文档说的很清楚,商户已有H5商城网站,用户通过消息或扫描二维码在微信内打开网页时,可以调用微信支付完成下单购买的流程。 当然,最近微信支付平台也加入了...

    小柒2012
  • 厉害了,关于String的10道经典面试题。

    1、String是基本数据类型吗? 2、String是可变的话? 3、怎么比较两个字符串的值一样,怎么比较两个字符串是否同一对象? 4、switch中可以使用S...

    Java技术栈
  • orika实现自定义转换

    orika是我比较喜欢的一个属性复制框架,性能高,也用得比较爽。 但在实际项目中,复制时,不一定成功。 如现在我有一个项目,属性名称一样,类型不一样,就需要...

    星痕
  • 大数据算法设计模式(2) - 左外链接(leftOuterJoin) spark实现

    左外链接(leftOuterJoin) spark实现 package com.kangaroo.studio.algorithms.join; impor...

    用户1225216
  • QQ小程序支付

    首先是配置类,设置为包内访问权限,其实应该放于properties文件,或者直接配置在xml中,偷了个懒直接写在了代码中

    WindrunnerMax

扫码关注云+社区

领取腾讯云代金券