注意num是静态变量,所有类实例都是共享的。就是累加,也就是S1=5,S2=10
其实最终的值就是sum的值,因为它是静态的,就是第一次循环加上第一次循环的和第二次的和
15 ,最重要的就是那个static 静态变量,所以值是不消失的,共享的,
java静态变量它能被所有的类实例共享,对于类的所有对象
下面这句
可以存在多个静态变量实体。
既然是被共享的,大家都分享一个才叫共享
每个人都有,那叫独享……
Class A{
static int x;
int y;
}
比如这个类A
里面有静态变量x和非静态变量y
不管
A a1=new A();
A a2=new A();
……
A a100=new A();
不管A有多少个对象,用的都是同一个x,这个叫做共享
但y是每个对象都有的,这个叫做独享
“java静态变量它能被所有的类实例共享”(这句是对的)
“对于类的所有对象,可以存在(多个)静态变量实体。”(这句是错的)
对于类的所有对象,只存在(一个)静态变量实体。
像我说的
Class A{
static int x;
int y;
}
A a1=new A();
A a2=new A();
x可以这样访问A.x,因为x是属于A的
当然a1.x和a2.x这样也能访问,内存地址一样
因为它们访问的都是A.x
但是,A.y这样访问就是错的,这个y并不属于A
只属于A的实例,在A实例化之前这个y是访问不了的
a1.y和a2.y访问的是它们独有的y,内存地址不一样