Java,Class 中的 For 循环
Java, For Loop in Class
我是一名新手程序员,我正在创建这个程序,我想在其中创建一个大小为 10 的布尔值列表,然后将所有值设置为 false。正如我在 Java 中所理解的那样,不应该将代码直接放在 class 中而不用方法包围它们。但是,我希望在创建 class 的实例后立即完成此操作。
我的问题是应该在哪里完成。我应该在构造函数中执行此操作,是否应该使用列表的所有值初始化列表,或者我是否只是错过了一些使得直接在 class 中放置 for 循环完全没问题的东西?谢谢
有人请求我的一些代码,所以这是这里的问题:
boolean[] numKeysPressed = new boolean[10];
for(int i = 0; i<10; i++){
numKeysPressed[i] = false;
}
您需要将代码放入构造函数中。
public class MyClass{
boolean[] numKeysPressed = new boolean[10];
public MyClass(){
for(int i = 0; i < numKeysPressed.length; i++){
numKeysPressed[i] = false;
}
}
}
请注意,布尔值的默认值为 false,因此这一步是不必要的。
However I want this to be done as soon as an instance of the class is created.
My question is then where this should be done. Should I do this in a constructor..
是的,这是一个完美的地方,因为构造函数的目的是用适当的状态初始化新创建的对象。
如果您的构造函数很少,您可以使用初始化块,它会由编译器自动添加到每个构造函数的开头
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);
}
}
顺便说一句,如果列表是指 boolean[]
数组,那么它默认填充有 false
值,因此您无需设置它。简单
class YourClass{
boolean[] list = new boolean[10]; // this array will be filed with false
}
这正是 constructors(<= 单击 link 获取教程)的目的 - 初始化 class 的成员。 Java VM 在创建对象时调用 class 的构造函数之一。
请注意 boolean
的默认值为 false
。因此,您的 for
循环是多余的 - 当您创建数组时,数组中的所有 boolean
值都已设置为 false
。
请记住,Java 中的所有实例变量和数组都被初始化为其等效的 0。
这意味着 boolean
s 和数组将始终用它们的 0 等效值填充,即 false
.
所以只要你有一个实例变量(在任何方法之外创建的变量),它就会默认为false
。
将这一行放在 class 中的某处(以及方法之外)就可以了:
boolean [] array = new boolean[7];
而array
将是一个包含7个boolean
类型元素的列表,其值都是false
.
您可以按如下方式将数组初始化为私有成员:
public class myClass {
private boolean array1[] = new boolean[] {false, true, false};
}
或者在构造函数中做如下:
public class myClass {
private boolean array2[] = null;
public myClass () {
Arrays.fill(array2, false);
}
}
我是一名新手程序员,我正在创建这个程序,我想在其中创建一个大小为 10 的布尔值列表,然后将所有值设置为 false。正如我在 Java 中所理解的那样,不应该将代码直接放在 class 中而不用方法包围它们。但是,我希望在创建 class 的实例后立即完成此操作。
我的问题是应该在哪里完成。我应该在构造函数中执行此操作,是否应该使用列表的所有值初始化列表,或者我是否只是错过了一些使得直接在 class 中放置 for 循环完全没问题的东西?谢谢
有人请求我的一些代码,所以这是这里的问题:
boolean[] numKeysPressed = new boolean[10];
for(int i = 0; i<10; i++){
numKeysPressed[i] = false;
}
您需要将代码放入构造函数中。
public class MyClass{
boolean[] numKeysPressed = new boolean[10];
public MyClass(){
for(int i = 0; i < numKeysPressed.length; i++){
numKeysPressed[i] = false;
}
}
}
请注意,布尔值的默认值为 false,因此这一步是不必要的。
However I want this to be done as soon as an instance of the class is created.
My question is then where this should be done. Should I do this in a constructor..
是的,这是一个完美的地方,因为构造函数的目的是用适当的状态初始化新创建的对象。
如果您的构造函数很少,您可以使用初始化块,它会由编译器自动添加到每个构造函数的开头
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);
}
}
顺便说一句,如果列表是指 boolean[]
数组,那么它默认填充有 false
值,因此您无需设置它。简单
class YourClass{
boolean[] list = new boolean[10]; // this array will be filed with false
}
这正是 constructors(<= 单击 link 获取教程)的目的 - 初始化 class 的成员。 Java VM 在创建对象时调用 class 的构造函数之一。
请注意 boolean
的默认值为 false
。因此,您的 for
循环是多余的 - 当您创建数组时,数组中的所有 boolean
值都已设置为 false
。
请记住,Java 中的所有实例变量和数组都被初始化为其等效的 0。
这意味着 boolean
s 和数组将始终用它们的 0 等效值填充,即 false
.
所以只要你有一个实例变量(在任何方法之外创建的变量),它就会默认为false
。
将这一行放在 class 中的某处(以及方法之外)就可以了:
boolean [] array = new boolean[7];
而array
将是一个包含7个boolean
类型元素的列表,其值都是false
.
您可以按如下方式将数组初始化为私有成员:
public class myClass {
private boolean array1[] = new boolean[] {false, true, false};
}
或者在构造函数中做如下:
public class myClass {
private boolean array2[] = null;
public myClass () {
Arrays.fill(array2, false);
}
}