深入Java关键字this的用法的总结(3)

这里定义了一个返回类型为Car类型的方法getCarObject(),并使用this关键字返回当前的对象Car。在main()方法中创建一个Car对象并使用instanceof方法判断getCarObject()方法返回的对象与Car 对象是否匹配。运行结果为true。

四、其他用法

除了上述情况外,this还可以用在其他场合。例如对象的比较,可以使用this和引用传递进行两个对象是否相等的判断。例如,一个学生类如下:

class Student

{ private String name ; private int age ; public Student (String name,int age) { this.setName(name) ; this.setAge(age) ; } public void setName(String name){ //设置姓名

} public void setAge(int age){ //设置年龄 this.age = age ; } public String getName(){

return; }

public int getAge(){ return this.age ; }}

生成两个对象,当两个对象中的姓名和年龄完全相等的时候,则认为对象相等,但是在此时就产生了两个问题:一是如何进行对象的比较?二是在哪里进行比较?这个例子中姓名定义为String类型, 我们知道String本身事一个类,如果想要进行相等的比较,则要判断内容是否相等,必须使用equals()方法完成。而年龄age定义为整型,直接使用“==”就可以完成。另外,对象的比较应该由自己行比较最为合适,所以应该在Student类中增加一个比较的方法,具体代码如下:

class Student

{ private String name ; private int age ; public Student (String name,int age) { this.setName(name) ;this.setAge(age) ; }

public boolean compare(Student stu) { //调用此方法时里面存在两个对象:当前对象、传入的对象

Student s1 = this ;//当前的对象,就表示stu1

Student s2 = stu ;//传递进来的对象,就表示stu2

if(s1==s2){// 判断是不是同一个对象,用地址比较

return true ; } //之后分别判断每一个属性是否相等 if(equals()&&s1.age==s2.age){

return true ; //两个对象相等 }else{ return false ; //两个对象不相等 } }

public void setName(String name){ //设置姓名  ; }

public void setAge
(int age){ //设置年龄 this.age = age ; }

public String getName(){ return; } public int getAge(){ return this.age ; }}

public class ThisExample07

{ public static void main(String args[]) {

Student stu1 = new Student ("李明",20) ; //声明两个对象,内容完全相等

Student stu2 = new Student ("李明",20) ; //声明两个对象,内容完全相等

// 直接在主方法中依次取得各个属性进行比较

if(stu1.compare(stu2)){

System.out.println("两个对象相等!") ;

}else{ System.out.println("两个对象不相等!") ;

} }}

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

结束语:Java中的this与面向对象的程序设计密切相关,它表示当前对象。

但是,在不同的使用场合它表示的真正含义是不完全一样的。this.成员变量、this.成员方法(参数列表):实际上都表示当前对象中的属性或当前对象调用的方法;this的核心表示当前对象,当前正在操作本方法的对象称为当前对象;使用this可以调用其他构造方法,但是此语句必须放在构造方法的首行this的使用在 节省代码、区分局部变量与成员变量、对象的比较等方面起着重要的作用,编程时我们应当给予重视并能够学会正确使用它。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/c3f614114ccb95082b5c88aeca4605ae.html