今天在论坛里看到这个题目,很多人贴的答案都是:两个.解释是:一个是“xyx”,一个是指向“xyx”的引用对象s。
看不懂啊...."xyz"可以理解,后面那个指向"xyz"的引用对象s怎么解释?s应该是个变量而已啊,在栈中,引用对象"xyz"啊!哪有什么引用对象s?我是这样理解的,是我理解错了,还是别人错了?求教...
看不懂啊...."xyz"可以理解,后面那个指向"xyz"的引用对象s怎么解释?s应该是个变量而已啊,在栈中,引用对象"xyz"啊!哪有什么引用对象s?我是这样理解的,是我理解错了,还是别人错了?求教...
而"xyz"本身就是一个匿名的String对象,一出现即在堆里面开辟了空间并存放在此空间中。
现在,题目问你,创建了几个String Object? 就等同于现在堆里面有创建了几个对象。你还可以把这个表达式拆开理解
String s = new String("xyz") 等同于String s = new String();s="xyz";这样堆上创建了几个对象,一看就明白了。
String s="xyz"的区别,像这样不通过new关键字,堆上只创建了一个String对象。
正确解释是:一个字符串常量池中的"xyz",一个是以这个字符串对象为模板生创建一个内容与之一模一样的字符串对象
回复框的上面,可以看一下有多少?都已经成灾了!这个问题是 CSDN Java 版著名的周经帖,每周最少出现一次!
英文可以的话,推荐~
http://www.iteye.com/topic/774673
而有用new关键字重新建了一个对象因此是两个。
我 建议如果的确不理解就先记住以后见的多了自然就明白了。
栈中为String类型变量String类型变量中保存的是 堆中的String对象的地址,堆中的String对象保存的是常量池中"xyz"的地址