Java 定义或初始化类的属性

2022-09-02 04:15:21

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

例:

以下代码片段应该指出我的意思。我在那里使用一个基元和一个对象:

import Java.util.Random;

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

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

与。

import Java.util.Random;

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

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

答案 1

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

其次,在类中将变量初始化为或声明变量是多余的,就像在Java中一样,原语默认为(or),对象引用默认为。但是,局部变量不是这种情况,但是,如果您尝试了以下操作,则会在编译时收到初始化错误。null00falsenull

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

将它们显式初始化为默认值 or 或是毫无意义的,但您可能希望将它们设置为另一个默认值,然后您可以创建具有默认值的构造函数,例如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;
   }
}

答案 2

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

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

我建议您阅读Java变量文档,它很好地描述了变量,此外,您还可以查看Java教程,这些教程再次成为很好的阅读材料。