是否将 int 初始化为 0?

2022-09-02 00:56:01

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

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

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


答案 1

根据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

答案 2

初始化变量是一种很好的编码实践。

来自 Oracle Docs:

声明字段时并不总是需要赋值。已声明但未初始化的字段将由编译器设置为合理的默认值。一般来说,此默认值将为零或 null,具体取决于数据类型。但是,依赖这些默认值通常被认为是糟糕的编程风格。

初始化变量的好处如下:

  1. 使遵循代码变得更加容易
  2. 使静态分析工具的生活更轻松。
  3. 大多数流行的设计模式都要求您将变量初始化为默认值,以便程序员确切地知道变量初始化为哪个值。
  4. 最好先初始化变量以防止程序稍后出现未定义的行为。
  5. 如果初始化变量,调试将变得更加容易。

推荐