定义类属性和初始化它们之间有区别吗?有没有你想要一个做另一个的情况?
示例:
以下代码段应指出我的意思。我在那里使用原语和对象:
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();
....
答案 0 :(得分:16)
首先,您不能将基元设置为null,因为基元只是null
是对象引用的数据。如果您尝试编译int i = null
,则会出现不兼容的类型错误。
在Java中声明变量时,将变量初始化为null
或0
是多余的,原语默认为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;
}
}
答案 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(视情况而定)是不必要和冗余的。