黑马程序员技术交流社区
标题:
string问题
[打印本页]
作者:
吕振中
时间:
2013-5-29 00:10
标题:
string问题
各位大神,有关于一个string的问题一直没有搞明白。
string a = "abc"为什么是一个对象。
string a = new string("abc")为什么就两个对象了呢?
作者:
神之梦
时间:
2013-5-29 00:16
String 类比较特殊,
String a = "abc";等效于String a = new String();
我的理解是,凡是字符串都是一个对象,也就是说“abc”已经是一个字符串了
string a = new string("abc");这句话里面new 是一个对象, “abc”又是一个对象,
这不就两个对象了
欢迎指正。。。。。
作者:
刘兆华
时间:
2013-5-29 03:13
我个人认为:String a="abc" 是将 String a在内存中的引用地址指向abc (如果有的话)。 而String a=new String("abc");则是不管内存中有没有"abc"都会去创建一个
String a="abc";
String a3="abc";
String a1=new String("abc");
String a2=new String("abc");
System.out.println(a==a1);
System.out.println(a1==a2);
System.out.println(a==a3);
/*
运行结果为:
false
false
true
*/
复制代码
作者:
廖志强
时间:
2013-5-29 07:47
C:\Documents and Settings\Administrator\桌面String a = "abc";等效于String a = new String();但不相等,String a = "abc";其实是吧字符串自动装箱了,但是没有在堆内存里开辟空间,"abc"只是在常量池里直接指向了栈内存;而String a = new String();是先在堆内存里开辟了一个空间,"abc"在常量池里,有两个地址值,给亲一个内存吧。
作者:
yasyas001
时间:
2013-5-29 09:06
首先string类型是在常量池里保存,第一种情况是自动装箱不经过堆内存,直接是栈指向常量池,而第二种是栈引用,在堆内存开辟空间,再引用常量池的,
作者:
吴刚—heima
时间:
2013-5-29 10:39
你可以这样理解String a="abc";是一个常量对象,就好比我在前面的帖子说过,就是一个实际的编号为1的苹果,而String a2=new String("abc")则是一个实例化的String 对象,这就好比你从苹果树上取下来一个编号为1的苹果,这两个苹果虽然内容是一样的,但是它们的出处却是不一样的,也就是说它们在内存中存储的地址是不同,这样理解了吗?
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2