一.当类中的成员变量与成员方法中的参数方法重名时,方法中如何使用成员变量呢?JAVA中为我们提供了this关键字来解决这个问题。
我们从下面的一个例子开始:
public class BorrowABook {//创建借书类 String name;//属性:书名 public BorrowABook(String name){//参数为name的值付给属性name this.name=name; } public void borrow(){ //借书方法 System.out.println("请前往借阅登记处领取"+name+"。");//输出借书的书名 } public static void main(String[] args){ BorrowABook book=new BorrowABook("《战争与和平》");//创建参数为“《战争与和平》”的借书类对象 book.borrow();//调用借书方法 } }从
从上面的代码中我们可以看出当用了this关键字后就避免了成员变量与形参的名称重合。在上述代码this.name=name中,左边是成员变量,右边是形参。如果我们没有用this,那么左右两边都是形参变量,此时就会出问题。
而this的本质其实就是一个存储调用它的对象的地址的变量。它可以要在方法中,用来拿到当前对象;哪个对象调用方法,this就指向哪个对象。
二.关于this要注意的几点:
1.this只能在构造方法中调用其他方法
2.this要放在第一行
3.一个构造方法中只能调用一个构造方法。
输出结果如下:
123
我们从这个运行结果中可以看出,它输出的值不是成员变量的值,也就是说,如果方法中出现了与局部变量同名的参数,会导致方法无法直接使用成员变量。
在上述代码中可以看到,成员变量与在showtName()方法中的形参的名称相同,都为name,那么如何在类中区分使用的是哪一个变量呢?在java语言中规定使用this关键字来代表本类对象的引用,this关键字被隐式地用于引用对象的成员变量和方法。