java中静态属性和类的关系 java中静态属性和类的关系是什么样的? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 静态变量 静态变量与静态方法类似。所有此类实例共享此静态变量,也就是说在类装载时,只分配一块存储空间,所有此类的对象都可以操控此块存储空间,当然对于final则另当别论了。看下面这段代码:class Value{ static int c=0; static void inc(){ c++; }}class Count{ public static void prt(String s){ System.out.println(s); } public static void main(String[] args){ Value v1,v2; v1=new Value(); v2=new Value(); prt("v1.c="+v1.c+" v2.c="+v2.c); v1.inc(); prt("v1.c="+v1.c+" v2.c="+v2.c); }} 结果如下:v1.c=0 v2.c=0v1.c=1 v2.c=1 楼主问静态属性和类的关系,我只知道静态属性可以使用类名直接的访问一旦将什么东西设为static,数据或方法就不会同那个类的任何对象实例联系到一起,它是一群类对象的共享数据 静态我觉得要领悟它的2点:1、调用的时候直接用。就是说不用实例化这个类就可以用了这个属性或者方法。2、相当c/c++的全局变量。也就是说它保存的值就是最近一次改动它的那次。其实两点可以归一。但是分开来更具体点。这个我在刚学的时候参考了c++里面的static,印象比较深刻。 静态的的成员存放在data segment区域 初始化后它在内存中一直存在,不像局部变量存放在栈中,而静态的成员在类中可以直接用类名加"."引用,不用在new出来对象以后调用它 在import的时候,类的静态属性被初始化而类的普通属性则在对象实例化的时候初始化 import的时候类的静态属性不一定会被初始化,会不会立即初始化这跟虚拟机的实现有关,但是java虚拟机规范指出无论类被装载的时候是立即初始化(即你所说的import时初始化)还是延迟初始化(当使用到这个类的一些特性时初始化)都需要给用户一个延迟初始化的映像,也就是说,即使你是立即初始化的,但是给用户的映像也是延迟初始化的,即使是类的验证也是如此。 在类还没有初始化的时候,静态方法和属性的内存已经被分配,这个内存空间一直是固定的,直到它被销毁,在静态方法与属性未被初始化之前,虚拟机会给一个默认初始值,这个默认初始值是所有基础类型都是0,所有对象类型全部指向null,尤其说明boolean类型,它是一个特别的类型,虚拟机内存中不存在这个类型,它在方法区的表现形式与在方法栈局部变量区不同,在方法区中boolean类型被表示为一个short类型,而在方法栈的局部变量区是表示为int类型(由此说明,你用boolean类型与用int类型所消耗的内存空间对于java来说其实是一样的)。 static变量属于类,而不是一个类的具体的实例.在类内部可以当全局变量使用,不需要this去引用。如果该变量是public的,那么类外部可以通过类名去引用,而不是类的实例 可以直接用类名调用,比如2楼的V1.c和V1.inc.还有就是静态属性只初始化一次,在其它属性之前就已经初始化完毕 http://www.diybl.com/course/3_program/java/javaxl/2008821/136721.html不好意思,上次我谁便说的 io中修饰模式 JAVA 关于数组的一个小问题 谢谢 很笨的spring问题啊。。。。。。哎 jsp查询数据和库里不同步 日历中的一点问题,求助! 帮忙看个算法,谢谢 有没有纯中文版的JDK帮助文档啊? 为什么找不到hibernate.cfg.xml 紧急求援:一个jacorb给java客户端传输汉字显示的问题! 特别怪的问题!!Please Help Me! 我的myeclipse的项目里保存后为什么没有classes目录?但好像也能运行 为什么静态方法(static)不能同时声明为抽象(abstract)方法?
static int c=0;
static void inc(){
c++;
}
}
class Count{
public static void prt(String s){
System.out.println(s);
}
public static void main(String[] args){
Value v1,v2;
v1=new Value();
v2=new Value();
prt("v1.c="+v1.c+" v2.c="+v2.c);
v1.inc();
prt("v1.c="+v1.c+" v2.c="+v2.c);
}
} 结果如下:v1.c=0 v2.c=0
v1.c=1 v2.c=1
一旦将什么东西设为static,数据或方法就不会同那个类的任何对象实例联系到一起,它是一群类对象的共享数据
2、相当c/c++的全局变量。也就是说它保存的值就是最近一次改动它的那次。其实两点可以归一。但是分开来更具体点。这个我在刚学的时候参考了c++里面的static,印象比较深刻。
import的时候类的静态属性不一定会被初始化,会不会立即初始化这跟虚拟机的实现有关,但是java虚拟机规范指出无论类被装载的时候是立即初始化(即你所说的import时初始化)还是延迟初始化(当使用到这个类的一些特性时初始化)都需要给用户一个延迟初始化的映像,也就是说,即使你是立即初始化的,但是给用户的映像也是延迟初始化的,即使是类的验证也是如此。
在类内部可以当全局变量使用,不需要this去引用。
如果该变量是public的,那么类外部可以通过类名去引用,而不是类的实例
还有就是静态属性只初始化一次,在其它属性之前就已经初始化完毕
不好意思,上次我谁便说的