- public class SubClass {
- int age = 2; //先声明实例属性并初始化
- {
- age = 5;
- System.out.println(age); //此处不需要this进行点取
- }
- }
- public class SubClass {
- {
- age = 5; //此处怎样都OK
- System.out.println(this.age); //此处需要this进行点取,为什么?
- }
- int age = 2; //后声明实例属性并初始化
- }
复制代码 类的成员变量在构造方法调用之前就已经初始化,因为代码的执行是从上往下,当执行到System.out.println(this.age);如果不加this,则视为age没有定义。加了this后相当于先调用构造方法,然后再调用它的age属性。此时就可以找到age了。你那个age=5那叫定义么?没有类型,执行这个肯定提示没定义么。定义必须加类型修饰。这个里面执行到system时就编译失败。此时它就找不到age的类型。它看不到后面的int age =2
|