java基础:this关键字的相关知识点

java基础:this关键字的相关知识点

引出this关键字

需求:定义一个user类,有name、age字段,相应的getter/setter方法,并且创建对象,设置对象的name、age数据,打印。

// 需求
class User{
	private String name;
	private int age;
	
	public String getName(){
		return name;
	}
	public void setName(String name){
		this.name = name;//把调用者传递的参数name赋值给name字段
	}
	
	//省略age的get/set方法
	
	public void show(){
		system.out.println(this.name+";"+this.age);
	}
	
}

this出现的位置

  • 构造器中:表示当前创建的对象
  • 方法中:哪一个对象调用this所在的方法,this就表示哪一个对象
    当一个对象被创建时,jvm会分配一个引用自身的引用:this
User u1 = new User();
u1.setName("lucy");
u1.show();//此时show方法中的this就是表示u1

在这里插入图片描述

this的使用场景

  1. 解决成员变量和局部变量(参数)之间的二义性
    如上所述,避免混淆
  2. 同一个类中实例方法之间的调用(可省略-不推荐省略)
class User{

	public void show(){
		system.out.println(this.name+";"+this.age);
	}
	public void sayHello(){
		system.out.println("hello");
		this.show();
	}
}
public static void main(String[] args){
	User u1 = new User();
	u1.setName("lucy");
	u1.setAge(11);
	//此时sayHello()中this是u1对象,show()中的this是调用show方法的对象
	u1.sayHello();
}
  1. 将this作为参数传给另外一个方法
    在java的String类中的一个方法
    在这里插入图片描述
  2. 将this作为方法的返回值(链式方法编程)
  3. 构造器重载的互调,this()必须写在构造方法的第一行
    代码重复会导致维护性低
    构造器中只能调用一个重载的构造器(少参数调用多参数
    一般多参数考虑的未知的参数更多–功能更强大
class User{
	//默认构造器:
	User(){

	}
	//创建对象,初始化name
	User(String name){
		this(name,0);//表示在调用参数为String\int类型的构造器
	}
	//创建对象,初始化name、age
	User(String name,int age){
		this.name = name;
		this.age = age;
	}
}

例如arrays的方法重载
在这里插入图片描述

  1. static和this不能同用
    ps:在字节码被加载进虚拟机JVM时,static成员已经存在,但此时对象还没有被创建,此时还没有对象–也就不会有this(当前对象)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值