String s="a"+"b"+"c"究竟在内存创建了几个对象
2016-02-22 16:21
330 查看
知识点:编译器对字符串常量表达式进行优化 1. String s1 = "abc"; String s2 = "a" + "b" + "c"; String s3 = "a" + "b" + "c" + ""; //这种我没试,应该也和前面两个一样的,你可以试试 String s4 = "a" + "b" + 'c'; 前三种是一样的,因为编译器会对之后二种进行字符串常量表达式进行优化,变成第一种来操作:先查常量池,有就引用,没有就在常量池种创建再引用 第四种'c'是char类型,不是字符串常量,不能优化,这时用的是StringBuilder来append 2. String s1 = "a"; String s2 = s1 + "b" + "c"; 这种情况因为S1也是个字符串常量所以也会被优化成"abc"来处理 3. String s1 = new String("a"); String s2 = s1 + "b" +"c"; 这里S1是一个变量,因为它可以不是常量而是任何字符串,可能不在常量池中,所以不进行优化而是是用StringBuilder来append |
相关文章推荐
- css强大的负边距,用于两个挨着的div border只取一个。
- iOS 消息推送报错NSCocoaErrorDomain Code=3000
- openstack配置增加
- linux下批量替换文件内容
- 用C语言实现二分查找算法
- 最简易的spring框架的搭建
- ios开发——日常之 获取设备唯一标识的各种方法?IDFA、IDFV、UDID分别是什么含义?
- hdu 1398 Square Coins
- java web 开发 FAQ
- dcoker镜像加速器使用
- 初识HTML
- vs2008编译boost
- MySQL无法打开binlog服务的解决办法
- [Sed] 使用替换结果作为命令执行
- jQuery监控动画执行完毕事件
- Android-Chart
- Android-Chart
- java线程系列---Runnable和Thread的区别、线程同步
- 20.Adding Javascript and CSS via Layout XML
- Java并发编程之创建线程