Java面向对象基础--this关键字的解析

this关键字的作用:

1、表示类中的属性。

class Person{		// 定义Person类
	private String name ;		// 姓名
	private int age ;			// 年龄
	public Person(String name,int age){	// 通过构造方法赋值
		this.name = name ; // 为类中的name属性赋值
		this.age = age ;// 为类中的age属性赋值
	}
	public String getInfo(){	// 取得信息的方法
		return "姓名:" + name + ",年龄:" + age ;
	}
};
public class ThisDemo02{
	public static void main(String args[]){
		Person per1 = new Person("张三",33) ;	// 调用构造实例化对象
		System.out.println(per1.getInfo()) ;	// 取得信息
	}
};

2、使用this调用本类的构造方法。

构造方法间可以互相调用,使用this(参数)的形式完成。

注意:在使用this关键字调用其他构造方法时,this()调用构造方法的语句只能放在构造方法的首行。

在使用this调用本类中的其他构造方法是,至少有一个构造方法是不用this调用的,以防止递归调用的情况出现。

class Person{		// 定义Person类
	private String name ;		// 姓名
	private int age ;			// 年龄
	public Person(){	// 无参构造
		System.out.println("新对象实例化") ;
	}
	public Person(String name){
		this() ;// 调用本类中的无参构造方法
		this.name = name ;
	}
	public Person(String name,int age){	// 通过构造方法赋值
		this(name) ;// 调用有一个参数的构造方法
		this.age = age ;// 为类中的age属性赋值
	}
	public String getInfo(){	// 取得信息的方法
		return "姓名:" + name + ",年龄:" + age ;
	}
};
public class ThisDemo05{
	public static void main(String args[]){
		Person per1 = new Person("张三",33) ;	// 调用构造实例化对象
		System.out.println(per1.getInfo()) ;	// 取得信息
	}
};


3、表示当前对象。

使用this和引用传递比较两个对象是否相等。

String本身是一个类,进行相等的比较,则要判断内容,使用equals()方法来完成。

age是int类型,使用 == 即可。

地址相等,则两个对象相等。地址如果不相等,一次判断属性内容是否相等。

class Person{		// 定义Person类
	private String name ;	// 姓名
	private int age ;		// 年龄
	public Person(String name,int age){
		this.setName(name) ;
		this.setAge(age) ;
	}
	public boolean compare(Person per){
		// 调用此方法时里面存在两个对象:当前对象、传入的对象
		Person p1 = this ;	// 当前的对象,就表示per1
		Person p2 = per ;	// 传递进来的对象,就表示per2
		if(p1==p2){	// 判断是不是同一个对象,用地址比较
			return true ;
		}
		// 之后分别判断每一个属性是否相等
		if(p1.name.equals(p2.name)&&p1.age==p2.age){
			return true ;	// 两个对象相等
		}else{
			return false ;	// 两个对象不相等
		}
	}
	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 ThisDemo08{
	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("两个对象不相等!") ;
		}
	}
};



上一篇:2016双十一行业解决方案分会场活动规则


下一篇:2019阿里云双11——亿元补贴提前领大促全攻略