这里定义了一个返回类型为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的使用在 节省代码、区分局部变量与成员变量、对象的比较等方面起着重要的作用,编程时我们应当给予重视并能够学会正确使用它。