java - 我需要一些帮助来理解java中的这段代码

标签 java

我在这段代码中堆栈,我不明白其中一些行发生了什么..我在每行旁边评论了我不明白它..

这是代码

public class C 
{
    boolean [] b = new boolean[3]; // Is this a vector of size 3 ?
    int count = 0;

    void set(boolean [] x, int i) 
    {
        x[i] = true;
        ++count;
    }

    public static void main(String [] args) 
    {
        C ba = new C();
        ba.set(ba.b, 0); // what does ba.b do?
        ba.set(ba.b, 2); // what does ba.b do?
        ba.test();
    }

    void test() 
    {
        if ( b[0] && b[1] | b[2] ) // what is this if statement do?
            count++;
        if ( b[1] && b[(++count - 2)] ) // what is this if statement do?
            count += 7;
        System.out.println("count = " + count);
    }
}

你能向我描述一下那里发生了什么吗?谢谢

最佳答案

boolean[] b = new boolean[3] 是一个包含 3 个数据点的 boolean 数组

b[0] = true; //or false
b[1] = false; //or true
b[2] = true; //or false

int count = 0;int 类型的变量

void set(boolean [] x, int i)boolean 数组 在位置一处设置为 true。例如

set(b,1)

将变量设置为

b[1] = true
count = 1

ba 是类 C 的实例。在本例中,它允许您调用方法 set(boolean [] x, int i) 和 boolean 数组, b 来自您的代码

最后,第一个 if 语句 if(b[0]&&b[1]||b[2]) 表示 if(第一个位置,b[0] b 为真并且第二个位置,b[1]第三个位置,b[2],为 true),然后将 count 变量加一。

第二个 if 语句 if(b[1]&&b[++count-2]) 表示 if(数组中的第二个位置,b[1] , 为 true并且 b[count-1] 为 true),然后将 7 添加到变量 count。

test() 的最后一行表示将变量 count 的值打印到命令控制台

编辑

vector 是 Java 中存储值的另一种方法,但它不限于一种数据类型,例如 intdouble。例如

import java.util.*;

public class VectorDemo {

   public static void main(String args[]) {
      // initial size is 3, increment is 2
      Vector v = new Vector(3, 2);
      System.out.println("Initial size: " + v.size());
      System.out.println("Initial capacity: " +
      v.capacity());
      v.addElement(new Integer(1));
      v.addElement(new Integer(2));
      System.out.println("Capacity after four additions: " +
          v.capacity());

      v.addElement(new Double(5.45));
      System.out.println("Current capacity: " +
      v.capacity());
      v.addElement(new Double(6.08));
      v.addElement(new Integer(7));
      System.out.println("Current capacity: " +
      v.capacity());
      v.addElement(new Float(9.4));
      v.addElement(new Integer(10));
      System.out.println("Current capacity: " +
      v.capacity());
      v.addElement(new Integer(11));
      v.addElement(new Integer(12));
      System.out.println("First element: " +
         (Integer)v.firstElement());
      System.out.println("Last element: " +
         (Integer)v.lastElement());
      if(v.contains(new Integer(3)))
         System.out.println("Vector contains 3.");
      // enumerate the elements in the vector.
      Enumeration vEnum = v.elements();
      System.out.println("\nElements in vector:");
      while(vEnum.hasMoreElements())
         System.out.print(vEnum.nextElement() + " ");
      System.out.println();
   }
}

而数组只能保存一种类型的数据,其大小在声明时指定。例如

int[] intArray = new int[2];
intArray[0] = 1;
intArray[1] = 250;

或者可以声明为

int[] intArray = {1,250};

参见here有关 vector 的更多信息和 here有关数组的更多信息。

关于java - 我需要一些帮助来理解java中的这段代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34373185/

相关文章:

java - 使用 Java 线程的异步调用

java - 从存储获取视频信息不起作用

java - 多人 2D 游戏中的数据结构 (Java)

java - 如何使用此分布在 Java 中生成随机 boolean 值?

java - 添加一行,其中的列已排序主键和外键 JDBC

java - 将顶点着色器计算转换/移植到 Java

java - Box2D - 用物理控制运动

java - 我可以在没有安装java的情况下使用JRebel吗

java - ElasticSearch 从多个位置获取具有一个值的数据

java - 为什么我的 equals 方法不起作用?