黑马程序员技术交流社区

标题: static 共享(完成) [打印本页]

作者: 王琪    时间: 2013-12-17 20:50
标题: static 共享(完成)
本帖最后由 王琪 于 2013-12-22 01:54 编辑

class deom{
    static int a=90;
}
class java {
  demo a1=new demo();
  demo a2=new demo();
   demo a3=new demo();
}
它们的变量是共享的?static就行吗?不还产生新的对象吗?
作者: 王召轩    时间: 2013-12-17 21:25
被static修饰的变量,叫静态变量或类变量。对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的)。
作者: 淡淡de烟草味    时间: 2013-12-17 22:39
静态的特点:       A:随着类的加载而加载         B:优先于对象存在          C:被类的所有对象共享           D:可以通过类名调用
作者: 王琪    时间: 2013-12-18 12:36
为什么先于对象存在?常量池与静态有关系吗?关于jvm拷贝new String ("nihao"); new String ("nihao");他们共用一个"nihao"常量?老师说String类特别?
作者: taoge    时间: 2013-12-18 13:10
变量是存放在栈内存中的,独一份,后面new出来的a1 a2 a3存放在堆内存中,三个对象的引用地址不一样,但里面的a的值一样
作者: 王琪    时间: 2013-12-18 19:37
哦...明白了谢谢你..




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2