两个对象,一个是静态区的”xyz”,一个是用 new 创建在堆上的对象。 ...
两个对象 一个在堆区 一个在字符串池 一个是xyz 一个是指向xyz的引用对象s ...
2020-05-24 17:04 0 1134 推荐指数:
两个对象,一个是静态区的”xyz”,一个是用 new 创建在堆上的对象。 ...
从面试题说起 这是一道很经典的面试题,在一本所谓的Java宝典上,我看到的“标准答案”是这样的: 两个,一个堆区的“xyz”,一个栈区指向“xyz”的s。 这个所谓的“标准答案”槽点太多,后面我们慢慢分析。 但是我觉得这个问题本身不具有什么意义,因为他没有既定义“创建”的具体含义 ...
引用自这位朋友:http://blog.sina.com.cn/s/blog_6a6b14100100zn6r.html 首先让我们了解几个概念: 栈:由JVM分配区域,用于保存线程执行的动作和数据引用。 堆:由JVM分配的,用于存储对象等数据的区域。 常量池 ...
引用自这位朋友:http://blog.sina.com.cn/s/blog_6a6b14100100zn6r.html 你知道在java中除了8中基本类型外,其他的都是类对象以及其引用。所以 "xyz "在java中它是一个String对象.对于string类对象来说他的对象值是不能修改 ...
String str=new String("abc"); 紧接着这段代码之后的往往是这个问题,那就是这行代码究竟创建了几个String对象呢? 答案应该是1个或者2个。 1个的情况:如果字符串池中已经存在了"abc"这个对象,那么直接在创建一个对象放入堆中,返回str引用。 2个的情况 ...
http://www.iteye.com/topic/774673 羞愧呀,不知道多少人干过,我也干过,面壁去! 这帖是用来回复高级语言虚拟机圈子里的一个问题,一道Java笔试题的。 本来因为见得 ...
转载自:http://www.cnblogs.com/ydpvictor/archive/2012/09/09/2677260.html String str=new String("abc"); 紧接着这段代码之后的往往是这个问题,那就是这行代码究竟创建了几个String对象呢? 相信 ...