public class Per {
int age;
float height;
float tall;
public static void main(String[] args) {
System.out.println(new Per().age);
}
}
为什么这样可以~求大神分析下 从内存中分析下这个输出的过程!
可以简单理解静态属性和静态方法是依赖class的,而非静态属性是依赖某一个对象的。静态方法执行时,并不需要创建一个具体的对象,因此静态方法不能访问非静态的属性(指this内部)。
但静态方法可以访问其他具体对象的属性,这一点与上面的原则并不矛盾。
个人理解,main方法里面你如果要输出一个对象.属性的话,那么有两条,如果你的对象声明是在main方法外声明的(不带static修饰),那么是无法调用的
,然后如果你直接在方法内部初始化一个对象的话,那么其实这个对象的作用域已经确定在main方法内了,在main方法内的对象肯定就会被他访问啊。
所以这就是为什么要么用static在外部修饰使用引用对象,要么在内部直接初始化对象也可以使用