static定义变量的特殊用法和static定义变量的优先级展示。
来源:互联网 发布:国家广电网络总公司 编辑:程序博客网 时间:2024/05/01 15:53
class Value{
static int c=0;
Value(){
c=15;
}
Value(int i){
c=i;
}
static void inc(){
c++;
}
}
class Count{
public static void prt(String s){
System.out.println(s);
}
Value v=new Value(10);
static Value v1,v2;
static{
prt("v1.c="+v1.c+" v2.c="+v2.c);
v1=new Value(27);
prt("v1.c="+v1.c+" v2.c="+v2.c);
v2=new Value(15);
prt("v1.c="+v1.c+" v2.c="+v2.c);
}
public static void main(String[] args){
Count ct=new Count();
prt("ct.c="+ct.v.c);
prt("v1.c="+v1.c+" v2.c="+v2.c);
v1.inc();
prt("v1.c="+v1.c+" v2.c="+v2.c);
prt("ct.c="+ct.v.c);
}
}
运行结果如下:
v1.c=0 v2.c=0
v1.c=27 v2.c=27
v1.c=15 v2.c=15
ct.c=10
v1.c=10 v2.c=10
v1.c=11 v2.c=11
ct.c=11
这个程序展示了静态初始化的各种特性。如果你初次接触Java,结果可能令你吃惊。可能会对static后加大括号感到困惑。首先要告诉你的是,static定义的变量会优先于任何其它非static变量,不论其出现的顺序如何。正如在程序中所表现的,虽然v出现在v1和v2的前面,但是结果却是v1和v2的初始化在v的前面。在static{后面跟着一段代码,这是用来进行显式的静态变量初始化,这段代码只会初始化一次,且在类被第一次装载时。如果你能读懂并理解这段代码,会帮助你对static关键字的认识。在涉及到继承的时候,会先初始化父类的static变量,然后是子类的,依次类推。
- static定义变量的特殊用法和static定义变量的优先级展示。
- 学习static定义静态变量的用法
- 静态变量 static 的定义
- 【程序41】学习static定义静态变量的用法
- extern、static、auto、register 定义变量的不同用法
- 变量的声明、定义、extern、static总结
- static变量和static函数的用法
- static变量和static函数的用法
- static定义静态变量
- static变量的用法!
- javascript定义变量和优先级的问题
- 为什么接口中定义的变量都是final static的
- C++ 在函数中用static定义的变量的
- static成员变量定义初始化
- static变量与static的用法
- 头文件中定义static静态变量的利弊
- static在头文件中定义变量的问题
- static成员变量在类的定义体中初始化
- 推荐下网易的桌面伴侣
- 转贴:致学计算机的和喜欢计算机的同学-很有启发
- 如何根据驱动程序及其安装文件来访问该设备呢(Visual C++ or C++ Builder均可以) 选择自 kingcaiyao 的 Blog
- 使用LARGE_INTEGER查看系统运行时间
- Java中Set的深入研究
- static定义变量的特殊用法和static定义变量的优先级展示。
- 把图片保存到sql server数据库里
- 标准纯C++实现简单的词法分析器(一)
- JAVA中的集合类
- Java中Collection Frame中常用集合简析(ArrayList,Vector,HashSet,TreeSet)
- 程序员不是神,态度决定一切
- DB2中内存的使用
- 标准纯C++实现简单的词法分析器(二)
- 标准纯C++实现简单的词法分析器(三)