java - 这两种初始化静态变量的方式有什么区别?

标签 java android static static-members

如果在 Android 应用程序中使用,以下两个示例之间有什么区别?

示例 1

public class ExampleClassOne {  
    public static int x = 9;
}

示例 2

public class ExampleClassTwo{   
  public static int x;
  static{   
      x = 9;    
  } 
}

最佳答案

对于这个例子没有区别。这两种形式做完全一样的事情。 (事实上​​,我怀疑生成的字节码实际上是相同的。)

有些情况下会有差异。或者更准确地说,你能表达的东西是有区别的。想到的一对夫妇是:

  • static 初始化程序 block 可以处理异常(尤其是已检查的异常),但初始化程序表达式不能。

  • static 初始化 block 可以将 static 初始化为任意复杂语句序列的结果,但初始化表达式仅限于您可以在单个表达式中计算的内容。


话虽如此,我建议您尽可能使用更简单的初始化表达式形式。毫无疑问,它更具可读性。

关于java - 这两种初始化静态变量的方式有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17505754/

相关文章:

c# - 编写公共(public)代码的最佳位置是静态帮助类还是基类?

java - 如何sqlite + listview + onListItemClick启动新的Activity?光标读取错误

android - 全局控制处理程序

c# - 静态方法之间的调用——这会破坏线程安全吗?

android - 是否可以在 Android 中以编程方式设置锁屏背景图片?

Android设置内容类型HttpPost

php - 静态变量和函数 : memory allocation in php

java - 如何获取JTextPane所有属性的内容?

Java 嵌入式数据库比较

java - Android Studio 扩展通知栏