一 this的含义

  • this是一个关键字,翻译为:这个
  • this是一个引用类型的变量,this变量中保存的地址指向了自己本身
  • this 存储在JVM堆内存的实例对象中
  • 创建100个Java对象,就有100个this变量,每一个对象都有一个自己的this
  • this可以出现在实例方法中,this指向当前正在执行动作的对象
  • this在多种情况下是可以省略不写的
  • this不能省略的情况:用来区分实例变量和局部变量时,this.不能省,不如:setter方法、有参构造方法中
  • this不能使用在带有static的方法中

案例说明this

public class CustomerTest {
	public static void main(String[] args) {
		Customer cus1=new Customer();
		cus1.setName("zhangsan");
		Customer cus2=new Customer();
		cus2.setName("lisi");
	}
}
class Customer {
	private String name;// 这是一个“实例变量”,所以想要访问这个数据,必须先创建对象,然后通过对象的引用访问:引用.的方式
	public Customer() { }
	public String getName() { return name; }
	public void setName(String name) {
		// this可以出现在实例方法中,this指向当前正在执行动作的对象
		this.name = name;
	}
	// 这是一个实例方法,因为购物属于客户行为,每一个客户的行为是不一样的,所以不能使用关键字static修饰,必修定义为实例方法。
	// 实例方法怎么访问呢?必须是“对象引用.”的方式
	public void shopping() {
		// this可以出现在实例方法中,this指向当前正在执行动作的对象
		System.out.println(this.name + "正在购物......");
	}
}

javathis关键字的三种用法 java this关键字理解_实例方法

this可以使用在哪里

  • 可以使用在实例方法中,代表当前对象,【语法格式:this.】
  • 可以使用在构造方法中,通过当前的构造方法调用其他的构造方法,【语法格式:this(实参)】。注意:this(实参)这种语法智能出现在构造函数的第一行。
//自定义Date类
public class Date {
	private int year;
	private int month;
	private int day;
	public Date(int year, int month, int day) {
		this.year = year;
		this.month = month;
		this.day = day;
	}
	//现在有一种需求是当调用无参构造方法时,设置默认当前时间为2020-1-1,可以有两种方式
	//方式一,这种方式和有参构造方式有重复代码,写起来繁琐
	/*
	 * public Date() { this.year=2020; this.month=1; this.day=1; }
	 */
	//方式二,这种方式能通过调用上面的有参构造方法实现赋默认日期
	public Date() {
		this(2020, 1, 1);
	}
	public int getYear() {
		return year;
	}
	public void setYear(int year) {
		this.year = year;
	}
	public int getMonth() {
		return month;
	}
	public void setMonth(int month) {
		this.month = month;
	}
	public int getDay() {
		return day;
	}
	public void setDay(int day) {
		this.day = day;
	}
}

调用static类型的方法

当调用static类型的方法时,既可以使用【类名.方法名()】的方式调用,也可以使用【引用.方法名()】的方式调用。正确的操作应该是【类名.方法名()】,当我们使用【引用.方法名()】方式调用的时候,虽然不报错,但是实际上和对象无关,还是使用的【类名.方法名()】方式。