this关键字杂谈

来源:互联网 发布:mac 双系统分区格式 编辑:程序博客网 时间:2024/06/06 19:03

1    this;深藏不露的关键字

例1

public class SimpleClassToShowThis {public int a;public void test(){int a;//此行注释a=55;System.out.println(a);}public static void main(String[] args) {SimpleClassToShowThis var=new SimpleClassToShowThis();var.test();System.out.println(var.a);}}
        局部变量和实例变量重名的时候会发生什么事情?例如上面的局部变量和实例变量都是a,也许我们会认为java变量会报错,因为两个变量重名了,而且他们的作用域是有重叠的:实例变量a可以在类中所有的方法中访问,包括方法test,而方法中还有一个局部变量也叫做a。那么当给a赋值时,以及以a为参数调用println()方法时,java平台肯定搞不清它是哪个a,这应该是个错误!

编译结果:


将实例变量a注释掉的编译结果:


分析原因:

       当方法体中使用一个变量的时候,java平台会按照先局部变量,后实例变量的顺序找,所以说test()中声明的int类型a变量,它与实例变量中的变量a虽然重名,但是却不会让java平台迷惑。按照先局部变量后实例变量的顺序,test()方法中第二行和第三行使用到的a都是局部变量。

推荐使用this关键字:为了让程序易读,且为了避免潜在的错误(一个方法中没有与实例变量重名的局部变量,后来又增加了一个与实例变量重名的局部变量)

例2

public class This{public int b;public void test01(){int b=10;this.b=b+5;//指向对象(var)的引用System.out.println(b);}public static void main(String[] args) {This var=new This();var.test01();System.out.println(var.b);}}

this:指向对象自己的引用

this关键字在方法中使用,是指向对象的引用,也就是this代表调用这个方法的对象。从理解上可以认为:(this和对象名有相同的值:引用),都指向同一个对象

this关键字只能在方法中使用,是用来指代调用方法的类的对象

如果使用this关键字访问一个变量,则是访问实例变量,java平台不会再从局部变量中寻找,这与不加this关键字不同

2   在方法中调用方法

3    留个无参的构造方法(给重要属性辅初始值)

4   在构造方法中调用构造方法

 待续......