日期:2014-05-18  浏览次数:20641 次

一道看似非常简单的面试题?
相信大家也都见过很多次了,小弟就是有点不理解:
题目如下:
String s = new String("xyx");创建了几个String Object?
我觉得应该只有一个对象就是"xyz" 因为s只是对它的引用,也可以说是句柄
但是答案却是这样:
两个。一个是“xyx”,一个是指向“xyx”的引用对象s。

真是百思不得其解

------解决方案--------------------
1.楼主该结一些帖子了
2.是两个对象,一个在pool里“xyz”,一个在heap堆里
3.s是引用变量,不是对象
------解决方案--------------------
Date d=new Date();//创建了几个?一个

String s=new String("xxx");//在常量池有一个XXXX字符串,还有一个和上面的一样
------解决方案--------------------
一个是s对象本身,另外一个就是常量池里产生的一个xyx
如果说是String s=“xyx”;的话就是一 个,如果new了的话
在常量池中就会产生新一个对象的
呵呵
------解决方案--------------------
这个过程拆成三个子过程

String s;
new String("xyz");----->拆成两个过程 String temp = "xyz"; new String(); //这个过程产生两个String: xyz和new String
s = xyz;//s指向new String的