A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈斌 中级黑马   /  2012-2-28 17:20  /  2527 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


this.name=neme

this.name=new String(name)
有什么区别?

9 个回复

倒序浏览
this.name=name:只是把name值赋给this.name,name只有一个。
this.name=new String(name):新建一个对象内容为name.
回复 使用道具 举报
区别就在于 NAME 的存储位置不一样.
回复 使用道具 举报
雷楚光 发表于 2012-2-28 18:22
this.name=name:只是把name值赋给this.name,name只有一个。
this.name=new String(name):新建一个对象内 ...

那不是理解为this对象跟String(nane)对象的内容一样、、、但是这两个对象并不相等?
回复 使用道具 举报
陈斌 发表于 2012-2-28 19:10
那不是理解为this对象跟String(nane)对象的内容一样、、、但是这两个对象并不相等? ...

怎么可能会一样 this.name只是 this的成员
回复 使用道具 举报
不要被this.name迷惑了。这两个变量的值是一样的,但是引用所指向的位置是不一样的。
回复 使用道具 举报
(1)this.name = name;一般用于构造方法中,name作为形式参数,传递的是实参的值(此值不一定是"name”),在对象被构建是产生于栈中,且只在构造方法的方法块中有效,构造方法完成,name参数也就消失了;
(2)this.name = new String("name")(不知楼主是不是此意),构建的实例对象中name变量的值指向一个String对象的引用,此对象的内容是"name”。
另外,一般地,(1)中实参常为字符串常量,在程序编译期间存储到常量池中,而(2)中则要在程序运行时动态地创建一个String对象,个人认为(1)的效率高些。
回复 使用道具 举报
当name不是字符串形式时,this.name=name,name的值不一定是字符串,而this.name = new String(name),name的值肯定是字符串。
回复 使用道具 举报
好比进了没有售票员的车 ,
1、直接把硬币投进去
2、你把钱给司机 , 司机再投进去
回复 使用道具 举报
你用new String(name),是在内存中又创建了一个对象,浪费了内存空间,没必要这样做
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马