博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
this关键字的解析
阅读量:6670 次
发布时间:2019-06-25

本文共 2327 字,大约阅读时间需要 7 分钟。

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("两个对象不相等!") ;		}	}};

 

 

转载地址:http://gjlxo.baihongyu.com/

你可能感兴趣的文章
设置Sysctl.conf用以提高Linux的性能(最完整的sysctl.conf优化方案)
查看>>
Office2010每次启动都要配置的解决办法
查看>>
B8 Concurrent JDK中的乐观锁与原子类
查看>>
XSUPERSMS 欢迎大家
查看>>
LeetCode(229):Majority Element ||
查看>>
CSS和JavaScript标签style属性对照表
查看>>
tp路由+伪静态+去掉index.php
查看>>
perl---2012学习笔记
查看>>
使用 Chef 管理 Azure 资源
查看>>
如何对于几百行SQL语句进行优化?
查看>>
多线程之旅——从概念开始
查看>>
C++中的虚函数(2)
查看>>
R.I.P. PK
查看>>
今日晚餐:姹紫嫣红阳春面
查看>>
【转载】使用铁哥SmartFlash快速开发方案:66行代码搞定抽奖程序!
查看>>
Map<key,value>泛型get(key)值为null问题解决
查看>>
ZendFramework学习第一章
查看>>
40种网页小技巧
查看>>
PHP 乱码解决方面
查看>>
在Linux中一个网卡绑定多个IP设定
查看>>