String s=“123” 跟String S = new string("123") 区别
String s=“123” 和String S = new string("123") 区别
这个问题,看了很多资料,帖子也看了很多,但是各人有各人见解;而且,有的帖子实在是误导人.........
大家分析从以下几个王方面分析看看
1、创建对象的个数
2、对象的保存位置
3、创建对象的方式
------解决方案--------------------
常量池只是一种说法,在JVM规范里就是class的一部分,在实现上就是方法区里的一个内存块,何来的对象一说?对象是对堆里数据结构的一种抽象描述,方法区里没有这种描述
------解决方案--------------------
莫非面试官想让你从JVM的角度去解释,什么方法区啊,常量池,堆栈这些角度去说,而不是单单的知道他们一个在堆,一个在栈。这里面都是JVM自己的实现,JVM里面的东西也常在改变,所以我觉得过分较真这个东西没有什么意义。java是个语言,我们主要是用它,能用起来就可以了。
这个问题,看了很多资料,帖子也看了很多,但是各人有各人见解;而且,有的帖子实在是误导人.........
大家分析从以下几个王方面分析看看
1、创建对象的个数
2、对象的保存位置
3、创建对象的方式
------解决方案--------------------
常量池只是一种说法,在JVM规范里就是class的一部分,在实现上就是方法区里的一个内存块,何来的对象一说?对象是对堆里数据结构的一种抽象描述,方法区里没有这种描述
------解决方案--------------------
可是有面试官,在问过==,equals之后;就问了, String s="123" 和 String s=new String("123") 区别有什么区别?
然后答了一些看法,面试官说,你这基础比较差劲.........
莫非面试官想让你从JVM的角度去解释,什么方法区啊,常量池,堆栈这些角度去说,而不是单单的知道他们一个在堆,一个在栈。这里面都是JVM自己的实现,JVM里面的东西也常在改变,所以我觉得过分较真这个东西没有什么意义。java是个语言,我们主要是用它,能用起来就可以了。