为了账号安全,请及时绑定邮箱和手机立即绑定

java static代码块有什么作用

java static代码块有什么作用

Cats萌萌 2019-03-01 10:37:00
JAVA静态代码块有什么用,用个大括号存放起来的静态代码块,一般用作什么,还有static关键字一般做什么功能的,举例说明下,谢谢
查看完整描述

6 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

类级别的初始化,只是在类加载的时候做一次,例如

public static String fileContent;

static {
    fileContent = readFromFile();
    fileContent = fileContent + "-----";
}
查看完整回答
反对 回复 2019-03-01
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

static 静态 JDK里的一个关键字,当在类中某个方法声明static,就不用实例化而是通过类名.方法名形式,
静态方法,变量不能访问非静态方法,变量,反之可以,static对于优化程序性能有好处。

查看完整回答
反对 回复 2019-03-01
?
阿晨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();
    }

代码文件地址
https://github.com/TommyLemon...

查看完整回答
反对 回复 2019-03-01
?
拉莫斯之舞

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();
    }

}
查看完整回答
反对 回复 2019-03-01
  • 6 回答
  • 0 关注
  • 693 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号