static 修饰的属性、方法、代码块的使用实例
来源:互联网 发布:养老金网络异地认证 编辑:程序博客网 时间:2024/05/16 06:49
class StaticTest{
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变量,然后是子类的,依次类推。
非静态变量不是本文的主题,在此不做详细讨论,请参考Think in Java中的讲解。*/
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变量,然后是子类的,依次类推。
非静态变量不是本文的主题,在此不做详细讨论,请参考Think in Java中的讲解。*/
- static 修饰的属性、方法、代码块的使用实例
- Java 中被static 修饰的属性,方法和代码块在什么时候加载
- java中synchronized修饰的方法或代码块和static synchronized修饰方法或代码块的区别
- Java的static修饰变量,方法,代码块的初始化顺序
- 静态代码块、代码块、构造方法、普通方法、static方法、 *静态属性、普通属性的加载顺序、执行顺序
- static修饰的类属性
- Java static属性和静态代码块和构造方法等的执行顺序探讨
- static修饰类,变量和方法,代码块
- 第十二讲 static关键字修饰属性和方法、代码块、单例设计模式、对象数组案例
- java中synchronized修饰的方法和代码块
- static代码块和static修饰符
- static修饰的静态方法
- java static块和static 方法 的使用区别
- 代码块(block)的使用---iOS4.0以后推出(声明成属性的时候,用copy修饰)
- 为什么static修饰的方法能不能调用非static方法和属性,请讲详细点
- 【JAVA】static 修饰的静态成员变量,静态成员函数及静态代码块
- static修饰符的使用
- Java中的static静态代码块的使用
- 从容不迫的态度
- 从容不迫者胜
- Ajax中文乱码解决方案
- 搜索引擎排名不等于网站的优化
- web2.0并不特别....如何省钱???
- static 修饰的属性、方法、代码块的使用实例
- ZZ《解剖PetShop》系列之五 PetShop之业务逻辑层设计
- SQLSERVER海量数据库的查询优化及分页算法方案
- 邮件地址合法性正则检查
- 对字符串正则替换
- LzmTW.uSystem.uCollection.SinceLink
- ZZ《解剖PetShop》系列之六 PetShop之表示层设计
- “非经典”设计回顾 (一)
- 中国最美的姑娘 值得大家思考