黑马程序员技术交流社区

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

作者: 谭荣强    时间: 2014-2-15 20:45
标题: this问题
this,name= name是一个怎样的过程啊。求解释

class test
{
        String name ;
        void getName(String name)
        {
                this.name = name;
                //name = this.name;
                System.out.println(name);

        }
}

class  lianxi
{
        public static void main(String[] args)
        {
                test t = new test();
                t.getName("老罗");
        }
}

作者: 陈呈泰    时间: 2014-2-15 21:28
this.name = name;
=后面的name是传进来的参数。
this是一个对自身对象的引用。就好比“ t.getName("老罗");”其中t是test对象的引用。
this.name=name:  把传进来的参数赋值到自身对象的name上。
作者: 袁劲松    时间: 2014-2-16 09:59
this是指向类的,本来可以省略,但由于类中的成员变量和传进方法中的的参数名字相同,所以要加上this加以区分
作者: 冯鸿昌    时间: 2014-3-7 02:43
this的用法:
1. 使用范围(where to use):只能在类的实例成员中使用。非(static )成员。
2. 如何使用 ( how to use) :  在类的构造函数,或实例成员中,使用this去引用自身。先看下面一段代码示例:
  1. public class Person {

  2.      public Person( ) {
  3.             this("");   //此处this用来引用自身的构造函数
  4.      }
  5.      public Person(String name) {
  6.             this.name = name;  //此处this用来引用(new Person())动态生成的对象
  7.      }
  8.      
  9.      public String getName() {
  10.             return this.name;   //引用自身(运行时(runtime),使用(new constructor(type.... ))生成的Object
  11.      }
  12.      private String name;
  13. }
复制代码


3 为什么使用this(why to use): 从上面的示例中,可以看出this的两个用法,引用成员变量,或调用构造函数
作者: 1453149997    时间: 2014-3-29 09:56
  void getName(String name)
         {
                 this.name = name;
              ...
         }
  如果写成name = name;那么就会由于“就近原则”导致这两个name都是参数列表里声明的name,为了防止受到就近原则的影响,需要在前面的name前加上this关键字,表明它是成员变量




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