Java学习笔记:详解this关键字

本文详细探讨了Java中的this关键字的用法,包括调用类的属性和方法、调用构造器以及表示当前对象的场景。通过实例展示了this如何解决命名冲突、提高代码重用性和明确对象引用,帮助读者更好地理解和运用this关键字。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

this关键字在Java中表示以下概念:

|·调用类中的属性:this.属性;

|·调用类中的方法:this.方法();

|·调用类中的构造:this();

|·表示当前对象

1(调用类中的属性和方法)

class Person{

   private String name;

   private int age;

   public Person(String name, int age){

      this.setName(name);  //调用类中的方法

      this.setAge(age);

   }

   public void setName(String name){

      this.name = name;    //调用类中的属性

   }

   public void setAge(int age){

      this.age = age;

   }

   public String getName(){

      return this.name;

   }

   public int getAge(){

      return this.age;

   }

}

public class Test{

   public static void main(String [] args){

      Person per = new Person("张三",30);

         System.out.println("姓名:" + per.getName() + "年龄:" + per.getAge());

      }

}

//使用this关键字完美解决属性name与局部变量name的命名冲突。并且让程序更加通俗易懂。

2:(调用类中的构造:)

现要求无论调用哪一个构造方法,都必须打印 我被调用了!

class Person{

   private String name;

   private int age;

   public Person(){  //无参构造

      System.out.println("我被调用了!");

   }

   public Person(String name){

      this();   //调用无参构造

      this.setName(name);

   }

   public Person(String name, int age){

      this(name);  //调用有一个参数的构造

      this.setName(name);

      this.setAge(age);

   }

   public void setName(String name){

       this.name = name;

   }

   public void setAge(int age){

      this.age = age;

   }

   public String getName(){

      return this.name;

   }

   public int getAge(){

      return this.age;

   }

}

public class Test{

   public static void main(String [] args){

      Person per = new Person("张三",30);

      System.out.println("姓名:" + per.getName() + "年龄:" + per.getAge());

   }

}

//以上代码无论是哪一个构造方法被调用,都会打印输出 我被调用了!而且提高了代码的重用性。

//调用类中的构造时,this()必须写在构造方法的第一行,并且在所有的构造中至少有一个不被调用。

//使用this()调用类中的构造方法,代码量减少了,代码的重用性提高了。

3(表示当前对象)

class Person{

   private String name;

   private int age;

   public Person(String name, int age){

      this.name = name;

      this.age = age;

   }

   public String getName(){

      return this.name;

   }

   public int getAge(){

      return this.age;

   }

   public boolean compare(Person per){

      if(this.name.equals(per.name) && this.age == per.age){

      return true;

   }

   else{

      return false;

   }

   }

}

public class Test{

   public static void main(String [] args){

      Person per1 = new Person("张三",30);

      Person per2 = new Person("张三",30);

      if(per1.compare(per2)){

         System.out.println("内容相等");

      }

      else{

         System.out.println("内容不相等");

      }

  }

}

 

//当前对象:当前正在调用类中方法的对象称为当前对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值