是否将int初始化为0?

新手上路,请多包涵

在 android 源代码中,我看到他们将四个变量定义为

protected int mPaddingRight = 0;
protected int mPaddingLeft = 0;
protected int mPaddingTop;
protected int mPaddingBottom;

在Java中,将变量初始化为0和不初始化有什么区别?我不明白在某些编译器中我无法进行比较,除非我初始化该字段。但这里不是这种情况。这与优化有关吗?或者这只是不一致/错误的编码实践?

原文由 Nouvel Travay 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 402
2 个回答

根据 Java 原始数据类型 turorial ,所有原始数据类型都有一个默认值。所以初始化是隐式的。一个好的做法:在使用之前初始化值以防止意外行为。

 byte    0
short   0
int 0
long    0L
float   0.0f
double  0.0d
char    '\u0000'
String (or any object)      null
boolean false

原文由 F.Igor 发布,翻译遵循 CC BY-SA 3.0 许可协议

局部变量必须在使用前进行初始化。

 class Main {
  public static void main(String[] args) {
    int x;
    System.out.println(x);
  }
}

此代码无法编译。但是实例变量(或类,如果它们是 static )具有默认值。

原文由 Alexander 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题