JAVA静态代码块有什么用,用个大括号存放起来的静态代码块,一般用作什么,还有static关键字一般做什么功能的,举例说明下,谢谢
6 回答

宝慕林4294392
TA贡献2021条经验 获得超8个赞
类级别的初始化,只是在类加载的时候做一次,例如
public static String fileContent;
static {
fileContent = readFromFile();
fileContent = fileContent + "-----";
}

慕姐4208626
TA贡献1852条经验 获得超7个赞
static 静态 JDK里的一个关键字,当在类中某个方法声明static,就不用实例化而是通过类名.方法名形式,
静态方法,变量不能访问非静态方法,变量,反之可以,static对于优化程序性能有好处。

阿晨1998
TA贡献2037条经验 获得超6个赞
原理如一楼所说。
举例:
我想通过SettingUtil.getCurrentServerAddress() 实现服务器地址切换(测服和正服),但只有再次打开应用才生效。
原以为加上 static final 就行了
public static final String URL_BASE = SettingUtil.getCurrentServerAddress();
结果是切换实时生效,断点跟踪进入发现每次调用URL_BASE时都会调SettingUtil.getCurrentServerAddress(),也就是URL_BASE的值没有保存!
后来用static静态代码块解决了
public static final String URL_BASE;
static {
URL_BASE = SettingUtil.getCurrentServerAddress();
}

拉莫斯之舞
TA贡献1820条经验 获得超10个赞
static
是静态修饰符,可用来修饰成员变量和方法,修饰的变量和方法属于类而不属于某个实例(直接通过类名来访问),当然任何实例也能访问;static{}
则表示静态块,再jvm加载类时就会被执行且只会被执行一次。
public class Test {
private static String a = "test";
private static void testStatic(){
System.out.println("test static method");
}
// jvm加载类时候就执行
static{
System.out.println("test static{}");
}
public static void main(String[] args) {
System.out.println(Test.a);
Test.testStatic();
//实例当然也能访问
Test test = new Test();
System.out.println(test.a);
test.testStatic();
}
}
添加回答
举报
0/150
提交
取消