【问题标题】:Java, For Loop in ClassJava,类中的 For 循环
【发布时间】: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。
  • 在构造函数中就可以了 :) 发布一些相关代码,您尝试过的和未尝试过的,我们可以为您提供更多帮助:)
  • 构造函数是正常的地方,但是如果你有多个构造函数并且希望避免在每个构造函数中重复初始化列表,那么在创建时初始化列表是正常的。

标签: java class methods constructor boolean


【解决方案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,因此这一步是不必要的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-03-21
          • 1970-01-01
          • 1970-01-01
          • 2015-01-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多