是否应在声明时初始化Java变量?

天空人

这个问题很简单,但是想知道在声明时初始化Java变量是否是一种好习惯?我不是很一致。我倾向于初始化布尔值,但别无其他。例如:

private Boolean test = false;
private Integer count;

我确信这是一个非常基本的问题,但是我有兴趣知道为什么以及何时?

基思

根据Java Practices,JVM将隐式设置以下默认值:

  • 数字:0或0.0
  • 布尔值:false
  • 对象引用:null

实际上,如果您显式设置这些值,则可能导致操作执行两次看一下下面的示例类及其使用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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

声明时初始化变量的值

来自分类Dev

声明时初始化全局变量的值

来自分类Dev

如果变量在声明时初始化并链接到NOLOAD节,是否有办法引发链接时间错误?

来自分类Dev

是否禁止在变量声明之间初始化变量?

来自分类Dev

是否禁止在变量声明之间初始化变量?

来自分类Dev

声明与初始化变量?

来自分类Dev

如果在声明时或在构造函数中初始化变量,会有区别吗

来自分类Dev

是否所有成员变量都应在__init__中初始化

来自分类Dev

Java中的变量声明和初始化

来自分类Dev

变量初始化/声明中的逗号

来自分类Dev

JavaScript声明和初始化变量

来自分类Dev

当函数执行时(Javascript),函数声明中初始化的变量是否总是被重新初始化?

来自分类Dev

Java初始化变量是否为空?

来自分类Dev

检查变量是否在Java中初始化

来自分类Dev

初始化Java变量

来自分类Dev

初始化变量Java

来自分类Dev

有没有办法在声明时用缓冲区初始化数组?

来自分类Dev

使用let声明时在初始化区域中的语句语义

来自分类Dev

在声明时或在 TestInitialize 方法中初始化单元测试类成员?

来自分类Dev

初始化元素不是用于全局声明时间函数的常量

来自分类Dev

尽管未初始化,如何检查变量是否已声明?

来自分类Dev

PHP检查静态变量是否已声明或初始化?

来自分类Dev

是否使用auto声明变量并使用原始文字定义的行为进行初始化?

来自分类Dev

如何在Java抽象类中声明未初始化的变量?

来自分类Dev

Java中已声明的,未初始化的变量会怎样?

来自分类Dev

是否按声明顺序初始化Java类中的成员字段?

来自分类常见问题

初始化,定义,声明变量之间的区别

来自分类Dev

声明和初始化实例/类变量的首选方式

来自分类Dev

C ++ 11变量初始化和声明

Related 相关文章

  1. 1

    声明时初始化变量的值

  2. 2

    声明时初始化全局变量的值

  3. 3

    如果变量在声明时初始化并链接到NOLOAD节,是否有办法引发链接时间错误?

  4. 4

    是否禁止在变量声明之间初始化变量?

  5. 5

    是否禁止在变量声明之间初始化变量?

  6. 6

    声明与初始化变量?

  7. 7

    如果在声明时或在构造函数中初始化变量,会有区别吗

  8. 8

    是否所有成员变量都应在__init__中初始化

  9. 9

    Java中的变量声明和初始化

  10. 10

    变量初始化/声明中的逗号

  11. 11

    JavaScript声明和初始化变量

  12. 12

    当函数执行时(Javascript),函数声明中初始化的变量是否总是被重新初始化?

  13. 13

    Java初始化变量是否为空?

  14. 14

    检查变量是否在Java中初始化

  15. 15

    初始化Java变量

  16. 16

    初始化变量Java

  17. 17

    有没有办法在声明时用缓冲区初始化数组?

  18. 18

    使用let声明时在初始化区域中的语句语义

  19. 19

    在声明时或在 TestInitialize 方法中初始化单元测试类成员?

  20. 20

    初始化元素不是用于全局声明时间函数的常量

  21. 21

    尽管未初始化,如何检查变量是否已声明?

  22. 22

    PHP检查静态变量是否已声明或初始化?

  23. 23

    是否使用auto声明变量并使用原始文字定义的行为进行初始化?

  24. 24

    如何在Java抽象类中声明未初始化的变量?

  25. 25

    Java中已声明的,未初始化的变量会怎样?

  26. 26

    是否按声明顺序初始化Java类中的成员字段?

  27. 27

    初始化,定义,声明变量之间的区别

  28. 28

    声明和初始化实例/类变量的首选方式

  29. 29

    C ++ 11变量初始化和声明

热门标签

归档