this关键字的理解
1、this的定义
表示当前类的对象,或者正在为当前类马上创建好的对象(类构造器中使用this)
当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是 this。
因此,this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this,并且this只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的this。
2、修饰属性
全局变量和局部变量一样的时候,全局变量前加this
package com.alibaba.gts.sofa.rpc.provider.domain; public class Student { private String name; private int age; private char sex; public String getName() { return name; } //全局变量和局部变量一样的时候,全局变量前加this public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public char getSex() { return sex; } public void setSex(char sex) { this.sex = sex; } }
3、this 修饰方法
public void eat(){ System.out.println("人吃饭and"+this.study()); } public String study(){ System.out.println("人学习"); return "人学习"; }
4、this修饰构造器
意思是可以通过this来调用别的构造器
public Student(String name) { this.name = name; } public Student(String name, int age) { this(name); this.age = age; }
5、把this作为参数传递
public class A{ public A(){ new B(this).print(); } public void print(){ System.out.println("From A!"); } public static void main(String[] args) { new A(); } } public class B{ A a; public B(A a){ this.a = a; } public void print(){ a.print(); System.out.println("From B!"); } }
运行结果:From A!
From B!
在这个例子中,对象A的构造函数中,用new B(this)把对象A自己作为参数传递给了对象B的构造函数。