Java定义或初始化类的属性

时间:2013-07-09 04:00:04

标签: java class attributes initializing

定义类属性和初始化它们之间有区别吗?有没有你想要一个做另一个的情况?

示例:

以下代码段应指出我的意思。我在那里使用原语和对象:

import Java.util.Random;

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

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

VS。

import Java.util.Random;

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

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

3 个答案:

答案 0 :(得分:16)

首先,您不能将基元设置为null,因为基元只是null是对象引用的数据。如果您尝试编译int i = null,则会出现不兼容的类型错误。

在Java中声明变量时,将变量初始化为null0是多余的,原语默认为0(或false)和对象引用默认为null。但是,对于局部变量,情况并非如此,如果您尝试以下操作,则会在编译时遇到初始化错误

 public static void main(String[] args)
 {
     int i;
     System.out.print(i);
 }

将它们显式初始化为默认值0falsenull是没有意义的,但您可能希望将它们设置为另一个默认值,然后您可以创建一个具有默认值,例如

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;
   }
}

答案 1 :(得分:2)

Shanku和Morpheus正确地回答了这个问题。首先,您将得到一个编译错误,将您的原始int变量“integer”设置为null;你只能为对象做到这一点。其次,Shanku是正确的,Java将默认值分配给实例变量,在示例代码中为“整数”和“随机”;实例变量可以在类或更高版本中查看,具体取决于范围(public,private,protected,package)。

但是,为本地变量分配的默认值。例如,如果在构造函数中指定了一个变量,如“int height;”然后它不会被初始化为零。

我建议您阅读Java variable documentation,它可以很好地描述变量,此外您还可以查看Java tutorials,这也是很棒的阅读材料。

答案 2 :(得分:1)

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

数字:0或0.0

booleans:false

对象引用:null

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