黑马程序员技术交流社区
标题:
关于 static 问题
[打印本页]
作者:
532989476
时间:
2014-6-15 20:37
标题:
关于 static 问题
class MyClass{
static int a;
int b;
}
public class TestMain{
public static void main(String args[]){
MyClass mc1 = new MyClass();
MyClass mc2 = new MyClass();
mc1.a = 100;
mc1.b = 200;
mc2.a = 300;
mc2.b = 400;
System.out.println(mc1.a);
System.out.println(mc1.b);
System.out.println(mc2.a);
System.out.println(mc2.b);
}
}
复制代码
请问a的结果为什么是300而不是100呢?
作者:
姿_`态
时间:
2014-6-15 20:50
静态变量存在于方法区,所以他就一个值,不会随着你创建多少对象而改变,第二次赋值第一次的值覆盖了,所以输出的都是300
作者:
18353665932
时间:
2014-6-15 21:12
静态定义的变量,除非是开始的时候就初始化,那样他的值不可在变,而且需要加上final关键字,但是没有final关键字修饰,那么对象调用的时候会覆盖他之前赋予的值,static是分配一个内存空间来存储这个变量,成员变量a是用static声明的,所以按照语句顺序执行后,a的值从100变为300并一直存在下去,结果就是你控制台输出的结果,就是说300进去了,内存中的100必须要出来,所以,最后才会出来最后赋予的那个数值!
作者:
532989476
时间:
2014-6-15 21:19
18353665932 发表于 2014-6-15 21:12
静态定义的变量,除非是开始的时候就初始化,那样他的值不可在变,而且需要加上final关键字,但是没有final ...
嗯嗯,有点了解了,谢啦
作者:
Alan_Kwan
时间:
2014-6-15 21:28
一句话:被static修饰的成员变量被所有该类对象所共享。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2