我是一名新手程序员,我正在创建这个程序,我想创建一个大小为10的布尔值列表,然后将所有值设置为false。正如我在Java中所理解的那样,不应该将代码直接放在类中而不用方法来包围它们。但是,我希望在创建类的实例后立即完成此操作。
我的问题是应该在哪里完成。我是否应该在构造函数中执行此操作,是否应该使用其所有值初始化列表,或者我只是错过了一些使得在类中直接放置for循环完全正常的东西?感谢。
我的部分代码被请求,所以这就是问题所在:
boolean[] numKeysPressed = new boolean[10];
for(int i = 0; i<10; i++){
numKeysPressed[i] = false;
}
答案 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);
}
}