2020-11-12

this关键字

用在类的实例方法构造方法当中,表示对当前对象的引用,在类中,属性的名字可以和局部变量的名字相同。此时,如果直接使用名字来访问,优先访问局部变量。因此,需要使用this关键字表示对当前对象的引用,来访问属性。

//例子如下,新建一个Person类
public class Person{
//定义一些属性
public String name;
public int age;
public char gender;
public int weight;
public int height;
}
//在Program类当中,给Person类初始化赋值
public class Program{
//初始化赋值
public static void main(String[] args){
Person xiaoming=new Person();
xiaoming.age=18;
xiaoming.gender='male';
xiaoming.weight=18;
xiaoming.height=166;
}
}

!!上述 的方法会产生一个问题,就是当给多个对象赋值的时候,每一个属性都需要逐一赋值,操作过于麻烦。
改进:在Person类中添加一个方法:setInfo()

public class Person{
//定义一些属性
public String name;
public int age;
public char gender;
public int weight;
public int height;
public void setInfo(String n,int a,char g.int w,int h){
name=n;
age=a;
gender=g;
weight=w;
height=h;
}
}

public class Program{
public static void main(String[] args){
Person xiaoming=new Person();
xiaoming.setInfo("xiaoming",18,'male',74,166);
}
}

但是这种改进方法,参数的命名不够明确,不够直接明白。
改进:

public class Person{
//定义一些属性
public String name;
public int age;
public char gender;
public int weight;
public int height;
public void setInfo(String name,int age,char gender.int weight,int height){
this.name=name;
this.age=age;
this.gender=gender;
this.weight=weight;
this.height=height;
}
}
public class Program{
public static void main(String[] args){
Person xiaoming=new Person();
xiaoming.setInfo("xiaoming",18,'male',74,166);
}
}

参数的name,age,gender等是存储在栈上的,方法的执行是需要压栈的。而属性则是存储在堆中,所以,通过this对当前对象的引用,从而达到属性的初始化。

this 关键字也是可以省略的,当且仅当要访问的属性与局部变量不重名的时。this可以省略,否则不可以

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值