黑马程序员技术交流社区

标题: String问题 [打印本页]

作者: 陈雪平    时间: 2012-12-20 22:09
标题: String问题
String s="hello"和new String("hello")有区别么?
作者: 李培根    时间: 2012-12-20 22:12
String s ="hello"在字符串常量池创建一个对象

new String在堆内存创建两个对象
作者: 王小聪    时间: 2012-12-20 22:28
String s="hello"和new String("hello")有区别么?
您好:从输出的角度来说是没有区别的
但是从内存的加载来说,String s="hello"加载的时候会先去方法区的字符串常量池查找,如果没有就创建一个hello对象。
但是String s=new String("hello")创建了2个对象,在内存的堆区。这个指向是方法区常量池的hello指向堆区的s
作者: 王小聪    时间: 2012-12-20 22:31
举例:
String s ="hello";
String s1 ="hello";
s == s1
结果true;//创建对象“hello”在方法区常量池共同对象
String s =new String("hello");
String s1 =new String("hello");
结果false;//因为创建的对象在堆区,hello有两个地址值
如果还不明白可以加我Qq,送自制内存图一张。QQ406996703




作者: 罗海清    时间: 2012-12-20 23:12
不知道我这样说可以不。
String s="hello"这个形式,是在静态存储区创建了一个字符串常量,就是说这个s是一个常量。
而String s1=new String("hello");这个形式,s1是一个对象,意思是把hello封装到了对象中,通过面向对象的思想,有什么需求就找对象,所以,可以猜测到,s1可以使用好多方法。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2