java中的this关键字解析

再学习Java的时候或者做项目的时候,this和super是绕不开的,今天就详细讲讲this关键字。

1 this 的作用

this:主要用于区分局部变量和成员变量同名的情景。

class Person{
    private String name;
    private int age;
    private Person(String n){
        name=n;
    }
    public void show(){
        System.out.println(name+"————"+age);
    }
}

class Demo{
    public static void main(String[] args){
        Person p=new Person("张三");
    }
}

输出为:张三----0

我们修改一下

class Person{
    private String name;
    private int age;
    private Person(String name){
        name=name;
    }
    public void show(){
        System.out.println(name+":"+age);
    }
}

class Demo{
    public static void main(String[] args){
        Person p=new Person("张三");
    }
}

再输出为:null----0

这是为什么呢,因为在name=name这一句中,能在本方法里找到局部变量name,就不会去类中找。而在show中找的name是成员变量name,它没有被赋值。那么如果通过构造方法给类中的name赋值呢,这就用到this了,只需要

    private Person(String name){
        this.name=name;
    }

这里this的作用就是将成员变量和局部变量区分开,当然在实际使用中也可以用我的第一种方法,取不同的名字区分来,效果是一样的。但是很多时候取不同的名字容易想不到它的涵义,比如这里用n,就很难联想到它是name。

2 this的应用

1.this调用本类中的属性(类中的成员变量)

正如上面举得例子,构造函数Person有一个形式参数name,在创建对象值传递的时候,需要将实际参数传给私有化的成员变量name。这里就起到区分成员变量和局部变量的作用。

2.this调用本类中的其他方法

这个就很常见,比如

class Person{
    private String name;
    private int age;
    public void show(){
        System.out.println(name+":"+age);
    }
    public void work(String str){
        this.show();
        System.out.println(str);
    }
}

在方法work中调用了show方法。

3.this调用本类中的其他构造函数

比如如下的例子

 

class Person
{
	private String name;
	private int age;
	Person()
	{
		System.out.println("person run");
	}
	Person(String name)
	{
		this();
		this.name =name;
	}
	Person(String name,int age)
	{
		this(name);
		this.age = age;
	}
}
class  Demo2
{
	public static void main(String[] args) 
	{
		Person p1 = new Person("张三",30);
		Person p2 = new Person("李四",36);
	}
}

上述写了一个Person对象,并且写了三个不同的构造方法,分别为无参构造函数,形参为name、形参为name和age的构造方法。

在形参为name的构造方法中加了this(name),调用无参的构造方法;在形参为name和age的构造方法中调用参数为name的构造方法。

注意调用其他构造方法一定要放在第一行。因为如果不放在第一行,会编译出错。

总结

我们总结一下this可以解决什么问题,代表的是什么?

this只能作用在同一个类中,代表着本类的对象,代表它所在方法(函数)所属对象的引用。也就是说哪个对象调用this所在的函数,this就代表哪个对象。

在应用的时候,当定义类中功能时,该函数内部要用到调用该函数的对象时,这时用this来表示这个对象。但凡本类功能内部使用了了本类对象,都用this表示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值