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