这个问题很简单,但是想知道在声明时初始化Java变量是否是一种好习惯?我不是很一致。我倾向于初始化布尔值,但别无其他。例如:
private Boolean test = false;
private Integer count;
我确信这是一个非常基本的问题,但是我有兴趣知道为什么以及何时?
根据Java Practices,JVM将隐式设置以下默认值:
实际上,如果您显式设置这些值,则可能导致操作执行两次。看一下下面的示例类及其使用Oracle编译的字节码javac
:
public final class Quark {
public Quark(String aName, double aMass){
fName = aName;
fMass = aMass;
}
//PRIVATE
//WITHOUT redundant initialization to default values
//private String fName;
//private double fMass;
//WITH redundant initialization to default values
private String fName = null;
private double fMass = 0.0d;
}
无冗余
>javap -c -classpath . Quark
Compiled from Quark.java
public final class Quark extends java.lang.Object {
public Quark(java.lang.String,double);
}
Method Quark(java.lang.String,double)
0 aload_0
1 invokespecial #1 <Method java.lang.Object()>
4 aload_0
5 aload_1
6 putfield #2 <Field java.lang.String fName>
9 aload_0
10 dload_2
11 putfield #3 <Field double fMass>
14 return
并具有冗余性:
>javap -c -classpath . Quark
Compiled from Quark.java
public final class Quark extends java.lang.Object {
public Quark(java.lang.String,double);
}
Method Quark(java.lang.String,double)
0 aload_0
1 invokespecial #1 <Method java.lang.Object()>
4 aload_0
5 aconst_null
6 putfield #2 <Field java.lang.String fName>
9 aload_0
10 dconst_0
11 putfield #3 <Field double fMass>
14 aload_0
15 aload_1
16 putfield #2 <Field java.lang.String fName>
19 aload_0
20 dload_2
21 putfield #3 <Field double fMass>
24 return
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句