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

Java构造函数变量被忽略

陆寒
2023-03-14
问题内容

我正在尝试创建对象Iset的实例。当人创建对象时,他们必须给出一个整数,该整数将是一个布尔数组的大小,该布尔数组将存储一组整数,例如1将是Iset [1]
= true等。但是我一直使索引超出范围错误。程序的其余部分显然会忽略我在构造函数中设置的值,那么如何确保在我的所有方法中都使用构造函数中使用的值?

代码的第一部分:

 public class Iset {
    public int size;
    boolean[] Ihtml" target="_blank">set;


    ISet(int a) {
        int size = a;
        seti = new boolean[size];

问题答案:

让我们看看您的代码:

 public class Iset {
    public int size;// Declares a Member of a class and all the objects will have a copy of this member
    boolean[] Iset;
.....
}


    ISet(int a) {
        int size = a; //This line is declaring a **local variable** called size 
        seti = new boolean[size];
...
}

在构造函数中,您已经看到创建了局部变量,size但是在类中也有一个称为类的成员size
。因此,在这种情况下,每当我们尝试size在构造函数中设置变量时,无论是设置局部变量还是类成员,编译器都会发生冲突(此冲突是因为局部变量和类成员都具有相同的名称)
在这种情况下,编译器会选择局部变量的大小而不是类成员的大小 。但是,要确保在构造函数中使用的值在我的所有方法中都已使用,
则必须设置class member 。要设置类成员,我们使用以下代码:

this.size = a;//Says set the object member size to value present in a.

在这里,我们使用 指针来引用大小, 因为我们需要设置对象的大小变量,而不是局部变量size



 类似资料:
  • 如果其他地方也提到了这一点,我提前表示歉意,但涉及的模糊/常见术语意味着我发现了很多不相关的点击,但没有任何有用的内容。由于我的项目相当大,我认为我提供M(N)WE是不合理的,所以我正在寻找其他检查方法的想法。以下是代码块: 我的构造函数(1)从未被调用。但是,(2)和(3)都没有被调用(即测试字符串从未打印过,也从未打印过异常)。根据我对try-catch块的理解,这应该是不可能的。 我使用Ec

  • 问题内容: 我有两个班,第一个是我的主班,第二个是我的编辑框架班。 我的第二个类(UpdateGUI)在其构造函数中提供oldName,并对其进行编辑,当我单击时,它将newName发送给我的第一个类。 我的第二堂课: 我的问题是,为什么newName为null? 更新: UpdateGUIDialog类: 输出: 我需要打印而不是null。 问题答案: Java对象有点像真实对象。并顾名思义:它

  • 本文向大家介绍Java构造函数,包括了Java构造函数的使用技巧和注意事项,需要的朋友参考一下 构造函数与方法相似,但在以下方面有所不同。 它们没有任何返回类型。 构造函数的名称与类的名称相同。 每个类都有一个构造函数。如果我们未为类明确编写构造函数,则Java编译器将为该类建立默认构造函数。 每次创建一个新对象时,将至少调用一个构造函数。 一个类可以具有多个构造函数。 示例 输出结果

  • 问题内容: 如果我有一个像这样的构造函数: 然后,我如何在与构造函数相同的类中的方法中使用变量c和d,因为尝试仅在方法中使用变量名似乎不起作用? 问题答案: 实际上,您的代码将无法编译- 无效。 我认为您的意思是:- 。 然后我如何在与构造函数相同的类中的方法中使用变量c和d 您不能这样做,因为您已将它们声明为局部变量,其范围在构造函数结束执行时终止。 您应该将它们声明为实例变量。

  • 问题内容: 构造函数何时被调用? 创建对象之前。 在对象创建期间。 创建对象之后。 问题答案: 分配对象内存,初始化具有初始值的字段变量,然后调用构造函数,但是其代码在对象超类的构造函数代码之后执行。

  • 问题内容: 我正在使用Spring Data Commons v2 +快照,并且看到a的构造函数已被弃用。这似乎发生在M1和M2之间。不幸的是,这是该接口的唯一[真实]实现。我想知道努力的方向,对于当前的开发有什么更好的选择。 问题答案: 只是已弃用的构造函数。代替 您现在可以使用 就是这样。