Java,For Class in Class

时间:2015-05-21 19:59:05

标签: java class methods constructor boolean

我是一名新手程序员,我正在创建这个程序,我想创建一个大小为10的布尔值列表,然后将所有值设置为false。正如我在Java中所理解的那样,不应该将代码直接放在类中而不用方法来包围它们。但是,我希望在创建类的实例后立即完成此操作。

我的问题是应该在哪里完成。我是否应该在构造函数中执行此操作,是否应该使用其所有值初始化列表,或者我只是错过了一些使得在类中直接放置for循环完全正常的东西?感谢。

我的部分代码被请求,所以这就是问题所在:

boolean[] numKeysPressed = new boolean[10];


for(int i = 0; i<10; i++){
    numKeysPressed[i] = false;
}

5 个答案:

答案 0 :(得分:7)

  

但是我希望在创建类的实例后立即完成此操作。

     

我的问题是应该在哪里完成。我应该在构造函数中执行此操作..

是的,这是完美的地方,因为构造函数的目的是初始化具有适当状态的新创建的对象。

如果你有很少的构造函数,你可以使用初始化块,它将在每个构造函数的开头由编译器自动添加

class YourClass{

    List<Boolean> list; 

    YourClass(){
        //constructor 1
    }

    YourClass(String s){
        //constructor 2
    }

    {
        //initialization block, will be executed at start of each
        //constructor (right after its super() call).
        list = new ArrayList<>();
        for (int i=0; i<10; i++)
            list.add(Boolean.FALSE);
    }

}

BTW,如果按列表表示boolean[]数组,那么它默认填充false值,因此您无需进行设置。简单

class YourClass{
    boolean[] list = new boolean[10]; // this array will be filed with false

}

答案 1 :(得分:2)

您需要将代码放在构造函数中。

public class MyClass{

    boolean[] numKeysPressed = new boolean[10];

    public MyClass(){
        for(int i = 0; i < numKeysPressed.length; i++){
            numKeysPressed[i] = false;
        }
    }

}

请注意,布尔值的默认值为false,因此此步骤是不必要的。

答案 2 :(得分:1)

这正是constructors(&lt; =教程的点击链接)的用途 - 初始化类的成员。在创建对象时,Java VM会调用类的构造函数之一。

请注意boolean的默认值为false。因此,您的for循环是多余的 - 在创建阵列时,阵列中的所有boolean值都已设置为false

答案 3 :(得分:1)

请记住,Java中的所有实例变量和数组都被初始化为0等效。

这意味着boolean和数组将始终使用0等效值填充,false

因此,只要您有一个实例变量(在任何方法之外创建的变量),它将默认为false

将这一行放在你班级的某个地方(并在一个方法之外)可以解决这个问题:

boolean [] array = new boolean[7];

array将列出7个boolean类型的元素,其值均为false

答案 4 :(得分:0)

您可以将数组初始化为私有成员,如下所示:

public class myClass {
     private boolean array1[] = new boolean[] {false, true, false};
}

或在构造函数中执行如下操作:

public class myClass {
   private boolean array2[] = null;
   public myClass () {
     Arrays.fill(array2, false);
  }
}