public class A{
static int K=4;
public static void main(String[] args){
A x1=new A();
x1.K++;
A x2=new A();
x2.K++;
K++;
System.out.prinltn(x1.K);
}
}
首先statiac存储在方法区中,所有的类都共用一个方法区,不再受对象的控制,
所以K在第一遍被调用后变成4,第二遍被调用后会在原来的基础上
再增加,因为至对其进行K++操作,如果是赋值则会变成重新赋值,
由于对其增加所以答案是 5;
如果没有static 则会变成4,
注意:
(1)某个类中的属性无论创建多少个对象,都只存在一个内存空间,也就是方法区,
每一个类都共享一个方法区,用static修饰的成员不存放在堆内存中。
(2)可以通过类名加 . 直接调用,不可以使用this
(3)静态方法中只能调用静态方法,不能调用实例成员。如果调用则需要创建对象,
(4)实例成员可以调用静态方法
Demo2类下
public static void nana(){
Demo2 ss=new Demo2();
}
public void haha(){
Demo2.nana();
}