This是java关键字吗_JAVA中的this关键字

this是JAVA中一个非常重要的关键字。

用法一:

为了了解this的用法,先看以下代码

packagejavastudy;public classThisDemo2 {public static voidmain(String[] args) {

Person1 l=new Person1(11,"lisi");

l.speak();

}

}classPerson1

{intage;

String name;

Person1(int a,String b){ //形参a,b,可读形很差,因为a和b代表什么意思,从字面上来不容易理解。

age=a;

name=b;

}voidspeak(){

System.out.println("My name is "+name+",my age is "+age);

}

}

输出结果:My name is lisi,my age is 11

以上代码,运行上没有任何问题,但是在可读性上存在问题。定义Person1类时,形参a、b的字面意思不得而知,需要结合上下文代码才能理解,阅读性较差。

改造以上代码,如下:

packagejavastudy;public classThisDemo2 {public static voidmain(String[] args) {

Person1 l=new Person1(11,"lisi");

l.speak();

}

}classPerson1

{intage;

String name;

Person1(int age,String name){ //形参改为age和name

age=age; // name=name; //}voidspeak(){

System.out.println("My name is "+name+",my age is "+age);

}

}

输出结果:My name is null,my age is 0

在实例化对象时,给age和name进行了传值,但是对象在堆中的age、name却未接收到传值。原因就在于age=age,name=name这两句代码中。

局部变量的名称与成员变量名称相同,JVM是无法进行区分的。

为了区分局部变量与成员变量,将成员变量的值传递给对象,就要用到this关键字。

如下

packagejavastudy;public classThisDemo2 {public static voidmain(String[] args) {

Person1 l=new Person1(11,"lisi");

l.speak();

}

}classPerson1

{intage;

String name;

Person1(int age,String name){ // this.age=age; // this.name=name; //}voidspeak(){

System.out.println("My name is "+name+",my age is "+age);

}

}

this关键字代表本类的对象, 即哪个对象在调用this所在函数,this就代表哪个对象。

如Person1 l=new Person1(11,"lisi"),l在调用Person1构造函数,this就代表l;如果增加代码Person1 w=new Person1(11,"wangwu"),this就代表w。所以,只要用this关键字,就可以简化代码。

其实,当我在类中定义成员的变量和方法时,其前面都有隐含的this关键字,哪个对象调用,this就代码哪个对象。只有这个this在很多时候,都是可省略不写的。

在同一类中,成员变量和局部变量相同时,要加this。

用法二:

先看以下代码:

packagejavastudy;public classThisDemo4 {public static voidmain(String[] args) {

Person4 p4=new Person4(12,"SB");

p4.speak();

}

}classPerson4{intage;

String name;

Person4(intage) {this.age=age;

}public Person4(intage,String name) {this.age=age; //重复

this.name=name;

}voidspeak(){

System.out.println(name+"|"+age);

}

}

以上代码中,

Person4(int age) {

this.age=age;

}

这段代码重复写了。可在第二个构造函数中直接调用。用this语句直接调用。且this语句要写在首行。

注:一般函数不能调用构造函数,只有构造函数才能调用构造函数。

如下

packagejavastudy;public classThisDemo4 {public static voidmain(String[] args) {

Person4 p4=new Person4(12,"SB");

p4.speak();

}

}classPerson4{intage;

String name;

Person4(intage) {this.age=age;

}public Person4(intage,String name) {this(age); //this语句,直接调用。相当于p4(age)。

this.name=name;

}voidspeak(){

System.out.println(name+"|"+age);

}

}

示例:

比较两个人的年龄是否相同

public classConfunDemo7 {public static voidmain(String[] args) {

Personman p1= new Personman(21);

Personman p2= new Personman(25);

System.out.println(p1.bijiao(p2));

}

}classPersonman {intage;

Personman(int age) { //构造函数,对象创建后,就传age给对象

this.age =age;

}public boolean bijiao(Personman p) { //函数,用于比较函数使用对象与参数对象,返回的是两者年龄比较结果布尔值。

return this.age ==p.age;

}

}

输出:false

public classConfunDemo7 {public static voidmain(String[] args) {

People i= newPeople();

People j= newPeople();

i.age= 35;

j.age= 55;

System.out.println(i.bjnl(j));

}

}classPeople {intage;public booleanbjnl(People p) {return this.age ==p.age;

}

}

输出:false

注:

this只能在类定义时使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值