java 理解static代码块的作用
来源:互联网 发布:局域网办公软件 编辑:程序博客网 时间:2024/05/01 12:53
static代码块一般用于初始化类中的静态变量,该静态代码块在类加载过程中的初始化阶段执行,并且只执行一次。
使用static静态代码块进行初始化与直接在定义变量的时候初始化效果是一样的,但是它们的先后顺序可能会对变量的值造成影响。
示例:
public class TestStatic {
public static int a = 1;
public static int b = 3;
public static String str;
static {
str = "i am here";
a = 10;
b = 30;
}
public static void main(String[] args) {
System.out.println(TestStatic.str);
System.out.println(TestStatic.a);
System.out.println(TestStatic.b);
}
}
public static int a = 1;
public static int b = 3;
public static String str;
static {
str = "i am here";
a = 10;
b = 30;
}
public static void main(String[] args) {
System.out.println(TestStatic.str);
System.out.println(TestStatic.a);
System.out.println(TestStatic.b);
}
}
输出:
i am here
10
30
10
30
上面的输出结果说明static静态代码块中的初始化操作覆盖了在定义变量时的初始化操作,即它们是按照在代码中书写的顺序依次进行初始化的,所以后面的赋值操作会覆盖前面的值。
如果把上面的代码改成这样:
public class TestStatic {
static {
str = "i am here";
a = 10;
b = 30;
}
public static int a = 1;
public static int b = 3;
public static String str;
public static void main(String[] args) {
System.out.println(TestStatic.str);
System.out.println(TestStatic.a);
System.out.println(TestStatic.b);
}
}
str = "i am here";
a = 10;
b = 30;
}
public static int a = 1;
public static int b = 3;
public static String str;
public static void main(String[] args) {
System.out.println(TestStatic.str);
System.out.println(TestStatic.a);
System.out.println(TestStatic.b);
}
}
输出就变成了:
i am here
1
3
1
3
这说明我们上面的结论是正确的。
补充说明:
static静态代码块其实完全可以看做是一个没有名字、没有参数、没有返回值的静态方法,这个静态方法会在main方法执行前执行,而且是主动执行的,不需要任何显示调用,除此之外它和普通的静态方法没有任何区别,因此对普通静态方法适用的规则也适用于该static静态代码块,比如:
1. 无法在静态方法里引用实例变量、也无法调用实例方法,但是可以调用静态变量和静态方法,你甚至可以在static静态代码块里调用main方法,都是没有问题的
2. 无法在静态方法里使用this关键字和super关键字(因为this关键字指向该方法所属的对象,而静态方法是属于类级的,不存在对象一说;至于super关键字,只要不是用在构造方法里,那么
它就是指向父类对象的,而静态方法是不能引用实例对象的,因此也不能使用super关键字)
3. 无法在静态方法里声明其他静态变量(其实这一点不只是静态方法才适用,包括实例方法也无法在方法体中声明静态变量,因为静态变量属于类变量)
4. 无法在静态方法里使用域修饰符来声明变量:public、protected、private,只能使用默认的访问域(这一点实例方法也是适用的)
1 0
- java 理解static代码块的作用
- java的static代码块的理解
- 理解java static 的作用
- java 中static块的作用
- java static代码块
- java Static 代码块
- java代码块的理解
- java代码块的理解
- java static{}语句块作用
- java static 代码块的应用
- java static 代码块的应用
- java静态代码块static {}的用法
- Java中Static代码块的认识
- java 中static的含义以及static代码块
- java中静态代码块的作用
- JAVA静态代码块的作用
- java代码块的划分及作用
- Java中static代码块、普通代码块和构造代码块的执行顺序
- AT指令中的<CR>和<LF>分别代表什么意思
- ORA-00600: 内部错误代码, 参数: [kcratr1_lastbwr]
- 使用自定义 OpenSSL 库编译 nginx
- 短信计费
- struts2,hibernate4,spring3配置时问题汇总及解决办法
- java 理解static代码块的作用
- as3遍历当前显示对象
- 说话的艺术
- Yii 表单输入数据保存不成功
- UVa 10278 - Fire Station
- 整数的立方和
- 景岁的Leetcode解题报告:147.Insertion Sort List (Java)
- 安装Chromium浏览器并添加Flash插件Pepper Flash Player
- 关于ExpandableListView用法