黑马程序员技术交流社区

标题: java中的new String的问题 [打印本页]

作者: 陈斌    时间: 2012-2-28 17:20
标题: java中的new String的问题

this.name=neme

this.name=new String(name)
有什么区别?
作者: 雷楚光    时间: 2012-2-28 18:22
this.name=name:只是把name值赋给this.name,name只有一个。
this.name=new String(name):新建一个对象内容为name.

作者: 房宝彬    时间: 2012-2-28 19:03
区别就在于 NAME 的存储位置不一样.

作者: 陈斌    时间: 2012-2-28 19:10
雷楚光 发表于 2012-2-28 18:22
this.name=name:只是把name值赋给this.name,name只有一个。
this.name=new String(name):新建一个对象内 ...

那不是理解为this对象跟String(nane)对象的内容一样、、、但是这两个对象并不相等?
作者: 雷楚光    时间: 2012-2-28 19:41
陈斌 发表于 2012-2-28 19:10
那不是理解为this对象跟String(nane)对象的内容一样、、、但是这两个对象并不相等? ...

怎么可能会一样 this.name只是 this的成员
作者: 闫玉泉    时间: 2012-2-28 20:29
不要被this.name迷惑了。这两个变量的值是一样的,但是引用所指向的位置是不一样的。

作者: hhubao2011_98    时间: 2012-2-28 21:39
(1)this.name = name;一般用于构造方法中,name作为形式参数,传递的是实参的值(此值不一定是"name”),在对象被构建是产生于栈中,且只在构造方法的方法块中有效,构造方法完成,name参数也就消失了;
(2)this.name = new String("name")(不知楼主是不是此意),构建的实例对象中name变量的值指向一个String对象的引用,此对象的内容是"name”。
另外,一般地,(1)中实参常为字符串常量,在程序编译期间存储到常量池中,而(2)中则要在程序运行时动态地创建一个String对象,个人认为(1)的效率高些。
作者: xieguanxiong    时间: 2012-3-1 10:02
当name不是字符串形式时,this.name=name,name的值不一定是字符串,而this.name = new String(name),name的值肯定是字符串。
作者: 丁晓宇    时间: 2012-3-1 12:32
好比进了没有售票员的车 ,
1、直接把硬币投进去
2、你把钱给司机 , 司机再投进去

作者: 胡军喜    时间: 2012-3-1 17:22
你用new String(name),是在内存中又创建了一个对象,浪费了内存空间,没必要这样做




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