一、this关键字概述:
java中this关键字可以完成以下操作:
1、调用类中的属性
2、调用类中的方法或者构造方法
3、表示当前对象
二、this代表当前的对象
代表他所在函数所属对象的引用,简单的说就是哪个对象在调用this所在的函数,this就代表哪个对象
public class ThisDemo { public static void main(String[] args) { Person p=new Person(); //p.setName("libushi"); //System.out.println(p.getName()); Person p1=new Person("haungjianfeng"); Person p2=new Person("haungjianfeng",21); } } class Person{ private int age; private String name; Person(){ //System.out.println("A:name="+name+",,age="+age); } Person(String name){ this(); this.name =name;//哪个对象调用该函数,this就代表哪个对象 //System.out.println("B:name="+name+",,age="+age); } Person(String name,int age){ //this.name =name; //这个可以将上面的构造函数拿来用 this(name);//这叫this语句,用于构造函数之间的调用 this语句只能定义在构造函数的第一行,因为初始化动作要先执行 this.age=age; //System.out.println("C:name="+name+",,age="+age); } public void setName(String name){ this.name = name; } public String getName(){ return name; } public void speak(){ System.out.println("name="+name+",,age="+age); //System.out.println("name="+this.name+",,age="+this.age);//哪个对象调用他,this就代表哪个对象的name和age } public void cry(){ System.out.println("cry......."); } }
public class NinetyFive { public static void main(String[] args) { Bear b1 = new Bear("小白", ‘公‘);//这里创建对象,给对象初始化的时候调用类相应的构造函数,那么this就表示b1这个对象 Bear b2 = new Bear(); } } class Bear{ private String name; private char sex; public Bear(){ this("熊大");//调用下面的构造方法,必须在这个方法中的第一行(构造函数之间的往下调用) } public Bear(String name){ this(name,‘公‘);//调用下面的构造方法(构造函数之间的往下调用) } public Bear(String name, char sex) { this.name = name;//调用类中的属性,表示当前对象的name,哪个对象调用this就表示哪个对象的name this.sex = sex; this.bite();//调用本类中的方法 } public String getName() { return name; } public void setName(String name) { this.name = name; } public char getSex() { return sex; } public void setSex(char sex) { this.sex = sex; } //咬人的方法 public void bite(){ System.out.println("我是"+sex+"熊--"+name); } }
三、this的应用:
当类中要定义功能时,该函数内部要用到调用函数的对象时,这时用this来表示这个对象
1、需求:定义一个功能,用于比较年龄是否相同
1 public class ThisTest { 2 public static void main(String[] args) { 3 Person p1 = new Person(20); 4 Person p2 = new Person(25); 5 boolean b = p1.compare(p2); 6 System.out.println(b); 7 } 8 } 9 class Person{ 10 private int age; 11 Person(int age){ 12 this.age = age; 13 } 14 public boolean compare(Person p){ 15 //可以用if else语句,也可以用三元运算符 16 return this.age==p.age;//this可以省略,加上阅读性比较好 17 } 18 }
时间: 2024-12-24 04:57:30