当前位置: 首页 > 面试题库 >

Java 在构造函数或声明中初始化类字段?

阳文轩
2023-03-14
问题内容

我最近一直在用C#和Java进行编程,并且很好奇初始化我的类字段的最佳位置。

我应该在申报时这样做吗:

public class Dice
{
    private int topFace = 1;
    private Random myRand = new Random();

    public void Roll()
    {
       // ......
    }
}

还是在构造函数中?:

public class Dice
{
    private int topFace;
    private Random myRand;

    public Dice()
    {
        topFace = 1;
        myRand = new Random();
    }

    public void Roll()
    {
        // .....
    }
}

我真的很好奇你们中的一些资深人士认为这是最佳做法。我要保持一致,并坚持一种方法。


问题答案:

我的规则:

  1. 不要在声明中的默认值初始化(null,false,0,0.0...)。
  2. 如果你没有用于更改字段值的构造函数参数,则最好在声明中进行初始化。
  3. 如果字段的值由于构造函数参数而改变,则将初始化放入构造函数中。
  4. 在练习中保持一致(最重要的规则)。


 类似资料:
  • 这是一个关于java中子类的非常基本的问题,我还是不明白…… 假设我有一个超类,它有三个字段,并且只有默认的构造函数: 我想添加一个字段x。我无法更改,所以我创建了一个子类: 我现在想从现有的对象生成object: 这样我仍然可以访问,等。 如果不在子类的构造函数中“手动”分配所有这些字段,我如何才能最好地做到这一点?

  • 问题内容: 如果未将ArrayList初始化为字段,则将项目添加到ArrayList时出现NullPointerException。谁能解释为什么? 当我将ArrayList初始化为字段时起作用: 当我将ArrayList声明为字段然后在Class构造函数中对其进行初始化时,它不起作用: 问题答案: 因为构造函数中的版本正在创建一个新变量,而该变量恰好与您的成员字段名称相同,而成员字段仍未设置。这

  • 我想在构造函数中初始化二维数组。但是,我在类中声明数组的实例变量时遇到了一个问题。如果我这样做就错了: 我怎么解决这个问题?

  • 生成类对象时,其成员可以用类的构造函数初始化。构造函数是与类同名的成员函数。程序员提供的构造函数在每次生成类对象(实例化)时自动调用。构造函数可以重载.提供初始化类对象的不同方法。数据成员应在类的构造函数中初始化或在生成对象之后设置其数值。 常见编程错误 6.7 类的数据成员只能在类定义中初始化。 常见编程错误 6.8 试图声明构造函数的返回类型和返回植是个语法错误。 编程技巧 6.5 适当时候(

  • 问题内容: 我不明白原始是如何转换为char数组的。如果我尝试使用其他代码,则会引发编译错误。 问题答案: 有两个属性: 因为您位于的构造函数中,所以您有权访问其私有字段和。 您无法从String类的外部访问这些字段,因此,如果尝试执行此操作,将抛出编译错误。

  • 问题内容: 我应该在这样的声明中初始化类字段吗? 还是像这样在setUp()中? 我倾向于使用第一种形式,因为它更简洁,并且允许我使用最终字段。如果我 不需要 使用setUp()方法进行设置,是否仍应使用它,为什么? 澄清: JUnit将每个测试方法实例化一次测试类。这意味着无论我在哪里声明,每次测试都会创建一次。这也意味着测试之间没有时间依赖性。因此,使用setUp()似乎没有任何优势。但是,J