Java,类中的 For 循环

Posted

技术标签:

【中文标题】Java,类中的 For 循环【英文标题】:Java, For Loop in Class 【发布时间】:2015-08-03 16:21:46 【问题描述】:

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

我的问题是这应该在哪里完成。我应该在构造函数中这样做,我应该用它的所有值初始化列表,还是我只是错过了一些东西,使它完全可以直接在类中放置一个 for 循环?谢谢。

我的一些代码被请求,所以这是这里的问题:

boolean[] numKeysPressed = new boolean[10];


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

【问题讨论】:

AFAIK 布尔值(原始)的默认值为 false。由于您希望将其放在 List 中,因此您必须使用为空的 Boolean。您可以考虑将您的代码使用 null 作为 false。 在构造函数中就可以了 :) 发布一些相关代码,您尝试过的和未尝试过的,我们可以为您提供更多帮助:) 在Constructor 构造函数是正常的地方,但是如果你有多个构造函数并且希望避免在每个构造函数中重复初始化列表,那么在创建时初始化列表是正常的。 【参考方案1】:

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

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

或者在构造函数中做如下:

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

【讨论】:

【参考方案2】:

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

这意味着booleans 和数组将始终使用它们的 0 等效值填充,即 false

所以只要你有一个实例变量(一个在任何方法之外创建的变量),它就会默认为false

在你的类(和方法之外)的某个地方有这条线就可以了:

boolean [] array = new boolean[7];

array 将是一个包含boolean 类型的7 个元素的列表,它们的值都是false

【讨论】:

【参考方案3】:

这正是constructors(

注意boolean 的默认值为false。因此,您的 for 循环是多余的 - 当您创建数组时,数组中的所有 boolean 值都将设置为 false

【讨论】:

【参考方案4】:

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

我的问题是应该在哪里完成。我应该在构造函数中这样做吗..

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

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

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


【讨论】:

初始化块肯定是这样做的;它们是一个鲜为人知的功能,但它们正是 OP 想要的。 感谢所有帮助。【参考方案5】:

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

public class MyClass

    boolean[] numKeysPressed = new boolean[10];

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


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

【讨论】:

以上是关于Java,类中的 For 循环的主要内容,如果未能解决你的问题,请参考以下文章

需要帮助访问内部类中的变量for循环

for 循环是不是只在 python 类中运行一次?

2.24 Java基础总结 ①for-each循环②继承概念③全类名④方法重写

循环函数在 Java 类中的行为不符合预期

for循环取出类中Map值

Java中的增强for循环怎么用?for()中的参数是啥意思