Java中this关键字用法详解

this关键字的作用:

(1)表示类中属性,如下代码是为了明确的表示出,哪个是类中的属性,于是就要加上"this.属性名称",加以区分!

public class This {

public static void main(String[] args) {

Person4 person4 =new Person4("nishuibaichuan", 21);

System.out.print(person4.getIofe());

}

}
class Person4{

private String name;

private int age;

public Person4(String name,int age){

this.name = name;//this.name为类中的name属性.

this.age = age;//this.age为类中的age属性.

}

public String getIofe(){

return "姓名:" + this.name + ",年纪:" + this.age;

}

}

 在大部分属性操作的时候,用上this是最合理的,包括把属性声明为私有的。

运行结果:   姓名:nishuibaichuan,年纪:21


(2)可以使用this关键字调用本类中的构造方法

如果在类中有多个构造方法的话,可以利用this关键字互相调用.

还有就是this()调用构造方法的话,必须放在构造方法的首行!并且this(参数)也只能放在构造方法首行,放在其他方法首行也会报错!

还有就是,调用本类中的构造方法时,不能自己调用自己,至少有一个构造方法不用this()调用,不然会出现递归或者死循环!

举例:

public class This1 {

public static void main(String[] args) {

Person5 person5 =new Person5("nishuibaichuan", 21);

System.out.println(person5.getIofe());

}

}
class Person5{

private String name;

private int age;

public Person5(){

System.out.println("this调用本类中构造方法!");

}

public Person5(String name){

this();//this调用本类中无参构造方法

this.name = name;

}

public Person5(String name,int age){

this(name);//this调用本类中含有一个参数构造方法

this.age = age;

}

public String getIofe(){

return "姓名:" + this.name + ",年纪:" + this.age;

}

}

运行结果:

this调用本类中构造方法!
姓名:nishuibaichuan,年纪:21


(3)this代表当前对象(重点)

当前对象:当前正在调用方法的对象;

举例:

public class This2 {

public static void main(String[] args) {

Person6 per1 = new Person6();//实例化对象per1

Person6 per2 = new Person6();//实例化对象per2

System.out.println("main()中--->" + per1);//直接打印对象

per1.show();//当前调用方法的对象为per1

System.out.println("main()中--->" + per2);//直接打印对象

per2.show();//当前调用方法的对象为per2

}

}

class Person6{

public String show(){

System.out.println("Person6类--->" + this);

return null;

}

}

运行结果:

main()中--->Nisbc.club.Person6@3bc257
Person6类--->Nisbc.club.Person6@3bc257
main()中--->Nisbc.club.Person6@153f67e
Person6类--->Nisbc.club.Person6@153f67e


4. 对象的比较

可以使用this和引用传递进行两个对象是否相等的判断.

地址相等,则两个对象相等,如果地址不相等,则依次判断每一个属性的内容来判断其是否相等.

举例:

public class This4 {

public static void main(String[] args) {

Person8 per1 =new Person8("nishuibaichuan", 21);

Person8 per2 =new Person8("nishuibaichuan", 21);

if(per1.compare(per2)){

//per1为当前对象,per2为传入对象

System.out.println("两个对象相等");

}

else{

System.out.println("两个对象不相等");

   }

}

}
class Person8{

private String name;

private int age;

public Person8(String name,int age){

this.setName(name);

this.setAge(age);

}

public boolean compare(Person8 per){

//调用此方法时,里面存在两个对象:当前对象,传入对象
Person8 per1 = this;//当前对象,就表示per1

Person8 per2 = per;//传入对象,就表示per2

if(per1 == per2){//判断是不是同一个对象,看他们的地址是否一样

return true;

}
//之后分别判断每一个属性是否相等

if(per1.name.equals(per2.name) && per1.age == per2.age){

return true;

        }

else{

return false;

}

}

public String getName() {

return name;

}
public void setName(String name) {

this.name = name;

}
public int getAge() {

return age;

}
public void setAge(int age) {

this.age = age;

}

}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值