今天去面试的时候碰到了这个问题:String str = new String("abc"); 创建了几个对象,回来自己研究并查阅资料才发现答错了。。
网上的争论不少,有的说是两个,答案应该是:两个或一个
理由解释如下:
都了解java 的字符串常量缓冲区(字符串池,字符串常量池),
如果代码是这样的:
并且 abc 字符串之前没有用过,这毫无疑问创建了两个对象,一个是new String 创建的一个新的对象,一个是常量“abc”对象的内容创建出的一个新的String对象,
网上的争论不少,有的说是两个,答案应该是:两个或一个
理由解释如下:
都了解java 的字符串常量缓冲区(字符串池,字符串常量池),
如果代码是这样的:
并且 abc 字符串之前没有用过,这毫无疑问创建了两个对象,一个是new String 创建的一个新的对象,一个是常量“abc”对象的内容创建出的一个新的String对象,