java支持两种常见的方法创建字符串
String s1 = new String("abc"); String s2 = "abc";
两种方法都有什么区别呢 内存图如下
1,S1首先查看字符串 abc 是否存在字符串常量池中,如果存在则直接指向,不存在,则创建一个
2,S2 查看常量池中 abc 是否存在,结果已经存在了,就直接指向引用了
区别
前者s1 创建了两个对象 堆内存中的new String 和 字符串常量区的 abc
s2只创建了一个对象 abc 如果存在 abc 那就一个对象也没创建
同时 String s = "abc";
字符串 abc作为一个对象也可以调用String类的方法
本文出自 “似水流年” 博客,请务必保留此出处http://firrty.blog.51cto.com/4028329/1729726
原文:http://firrty.blog.51cto.com/4028329/1729726