直接看代码
package com.hiyo.Class;
//this关键字的用法基础知识
//this的作用,
//1)this调用本类中的方法
//2)this表示本类中的属性
//3)this调用本类中的构造方法
class Person3 {
private String name ;
private int age ;
public Person3() {//构造方法相互调用的时候,唯一的构造方法出口。
//至少有一个构造方法不实用this进行调用
System.out.println("产生一个新的Person对象");
}
public Person3(String name, int age) {
this() ; //this调用无参数构造方法
//this调用的构造方法必须放在第一行。
//构造方法相互调用的时候,必须留一个构造方法作为出口
this.name = name ;//this调用属性
this.age = age ;
}
public String getInfo() {
return "name:" + this.name + ", age : " + this.age ;
}
//this最重要的特征是表示当前对象
//Java中的当前对象就是指当前正在调用类中方法的对象。
public String getAllInfo() {
System.out.println("Person类--->" + this ) ;
//this表示调用方法的当前对象
return null ;
}
//this用于对象的比较例子
public boolean compare(Person3 per) {
Person3 per1 = this;//this表示调用方法的当前对象
Person3 per2 = per ;
if(per1 == per2 ) {
return true ;
}
if(per2 == null) {
return false ;
}
if(per1.name.equals(per2.name) && per1.age == per2.age ) {
return true ;
}else {
return false ;
}
}
}
public class ThisDemo {
public static void main(String[] arg) {
Person3 per = new Person3("Yongjian",30) ;
System.out.println(per.getInfo());
Person3 per31 = new Person3();
Person3 per32 = new Person3() ;
System.out.println("Main中直接打印per31:" + per31);
System.out.println("Main中直接打印per32:" + per32 );
per31.getAllInfo() ;//方法调用打印this
per32.getAllInfo() ;//方法调用打印this
Person3 per33 = new Person3("Yongjian",18);
Person3 per34 = new Person3("Yongjian",18);
Person3 per35 = new Person3("Deng",30);
if(per33.compare(per34))
System.out.println("Per33==per34");
else
System.out.println("per3!=per34");
if(per33.compare(per35))
System.out.println("per33==per35");
else
System.out.println("per33!=per35");
}
}
运行结果参考
产生一个新的Person对象
name:Yongjian, age : 30
产生一个新的Person对象
产生一个新的Person对象
Main中直接打印per31:com.hiyo.Class.Person3@21bcffb5
Main中直接打印per32:com.hiyo.Class.Person3@380fb434
Person类--->com.hiyo.Class.Person3@21bcffb5
Person类--->com.hiyo.Class.Person3@380fb434
产生一个新的Person对象
产生一个新的Person对象
产生一个新的Person对象
Per33==per34
per33!=per35