论坛首页 Java企业应用论坛

请别再拿“String s = new String("xyz");创建了多少个String实例”来面试了吧

浏览 101445 次
该帖已经被评为精华帖
作者 正文
   发表时间:2011-04-25  
pouyang 写道
String s = new String("b"+"c");

在运行时涉及几个String实例?



应该是2个,常量池里面是“bc”,堆里面是有个new出来的,这里编译器会把“b”+"c"优化成“bc”的
0 请登录后投票
   发表时间:2011-04-29   最后修改:2011-04-29
面试大唐电信的时候,出了这么一道
 
String s = new String("hello")// 创建了几个String object对象

当时直接没想,就填了两个。呵呵。学习了。
0 请登录后投票
   发表时间:2011-06-04  
关键是 这个问题实际应用中  有什么地方开发必须要深究这个地方?
0 请登录后投票
   发表时间:2011-06-04  
takingoff 写道
关键是 这个问题实际应用中  有什么地方开发必须要深究这个地方?

我想说的不就是这个么…既然许多职位不需要在这种问题上纠结,最初就不应该在面试的时候问这种问题。
0 请登录后投票
   发表时间:2011-06-04  
想不到这个问题扯这么久
0 请登录后投票
   发表时间:2011-06-27   最后修改:2011-06-27
刚才我也看到一个宝典上有这么一道题,就看了看!然后看到LZ这么激情洋溢的描述果然是被雷到了!嗨!看来还是要潜心研究啊!话不多说,言归正传!

有人回答是这样的:
引用
两个或一个,”xyz”对应一个对象,这个对象放在字符串常量缓冲区,常量”xyz”不管出现多少遍,都是缓冲区中的那一个。New String每写一遍,就创建一个新的对象,它一句那个常量”xyz”对象的内容来创建出一个新String对象。如果以前就用过’xyz’,这句代表就不会创建”xyz”自己了,直接从缓冲区拿。

两个情况的就不用说了,LZ说的很清楚了!可是一个呢?
如果以前就用过’xyz’,这句代表就不会创建”xyz”自己了,直接从缓冲区拿,甚么叫以前就用过‘xyz’,这句话是甚么意思?能不能举个例子呢?说清楚点!最好能对比String s = new String("xyz")这个!
0 请登录后投票
   发表时间:2011-09-22  
高手呀!!!!!!!!!!!!
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics