Java定义或初始化类的属性

Java定义或初始化类的属性,java,class,attributes,initializing,Java,Class,Attributes,Initializing,定义类属性和初始化它们之间有区别吗?在某些情况下,你想一个一个地去做吗 示例: 下面的代码片段应该指出我所指的区别。我正在使用一个基本体和一个对象: import Java.util.Random; public class Something extends Activity { int integer; Random random = null; Something(){ integer = 0; random = new Rand

定义类属性和初始化它们之间有区别吗?在某些情况下,你想一个一个地去做吗

示例:

下面的代码片段应该指出我所指的区别。我正在使用一个基本体和一个对象:

import Java.util.Random;

public class Something extends Activity {
    int integer;
    Random random = null;

    Something(){
        integer = 0;
        random = new Random();
        ....
vs


在Java中,初始化是在语言规范中明确定义的。对于字段和阵列组件,创建项时,系统会自动将其设置为以下默认值:

数字:0或0.0

布尔人:错

对象引用:null


这意味着显式地将字段设置为0、false或null(视情况而定)是不必要和多余的。

首先,您不能将原语设置为null,因为原语只是数据,而
null
是对象引用。如果您试图编译
inti=null
,您将得到一个不兼容的类型错误

其次,在类中声明变量时,将变量初始化为
null
0
与Java中一样是多余的,原语默认为
0
(或
false
),对象引用默认为
null
。但是,局部变量不是这样,如果您尝试下面的方法,您将在编译时得到一个初始化错误

 public static void main(String[] args)
 {
     int i;
     System.out.print(i);
 }
将它们显式初始化为默认值
0
false
null
是毫无意义的,但您可能希望将它们设置为另一个默认值,然后您可以创建一个具有默认值的构造函数,例如

public MyClass
{
   int theDate = 9;
   String day = "Tuesday";

   // This would return the default values of the class
   public MyClass()
   {
   }

   // Where as this would return the new String
   public MyClass (String aDiffDay)
   {
      day = aDiffDay;
   }
}

山库和莫菲斯正确地回答了这个问题。首先,将原始int变量“integer”设置为null会出现编译错误;只能对对象执行此操作。其次,Shanku是正确的,Java为实例变量指定了默认值,这些变量在示例代码中是“整数”和“随机”的;实例变量可在类内或类外查看,具体取决于作用域(公共、私有、受保护、包)

但是,默认值不是为局部变量指定的。例如,如果在构造函数中指定了一个变量,如“int height;”,那么它将不会初始化为零


我建议您阅读,它很好地描述了变量,而且您还可以查看,这同样是很好的阅读材料。

我将在类级别列出变量,并使用构造函数初始化它们。此外,您尝试将null传递给原语,这可能会引起一些麻烦。
public MyClass
{
   int theDate = 9;
   String day = "Tuesday";

   // This would return the default values of the class
   public MyClass()
   {
   }

   // Where as this would return the new String
   public MyClass (String aDiffDay)
   {
      day = aDiffDay;
   }
}