【问题标题】:Where is size getting it's value (Java)大小在哪里获得它的价值(Java)
【发布时间】:2016-01-03 05:11:48
【问题描述】:

“int size”从哪里获得价值?我读了 1000 次代码,但我仍然不知道“大小”在哪里初始化,我是 java 新手,但我不明白这个,代码工作正常,任何帮助都会很好。提前致谢

public class Study {
  public static void main(String[] args) {
    Queue queue = new Queue();
    for (int i = 0; i <= 20; i++)
      queue.enqueue(i);

    while (!queue.empty())
      System.out.print(queue.dequeue() + " ");
  }
}

class Queue {
  private int[] elements;
  private int size;

  public Queue() {
    elements = new int[8];
  }

  public void enqueue(int value) {
    if (size >= elements.length) {
      int[] temp = new int[elements.length * 2];
      System.arraycopy(elements, 0, temp, 0, elements.length);
      System.out.println(elements.length);
      elements = temp;
    }

    elements[size++] = value;
  }

  public int dequeue() {
    int v = elements[0];

    // Shift all elements in the array left
    for (int i = 0; i < size - 1; i++) {
      elements[i] = elements[i + 1];
    }

    size--;

    return v;
  }

  public boolean empty() {
    return size == 0;
  }

  public int getSize() {
    return size;
  }
}

【问题讨论】:

  • size++size--
  • 是的,但您需要增加或减少价值,对吗?我知道它不是自动设置的
  • 您可以在Oracle website找到有关变量初始化的信息
  • 我知道它不是自动设置的它是,0
  • size 在创建Queue 时自动初始化为0

标签: java arrays class


【解决方案1】:

int 的默认值为 0

size++size-- 正在对其值进行更改。

更多信息请参考:Assignment, Arithmetic, and Unary Operators

【讨论】:

    【解决方案2】:

    size++ 等于语句size = size + 1size--size = size - 1 相同

    【讨论】:

      【解决方案3】:

      如果您没有提供一个实例变量,编译器将为所有实例变量分配一个默认值。 来自java doc的片段

      根据数据类型,默认值为 0 或 null。

      该链接还有一个网格,告诉您所有数据类型的默认值。

      局部变量是在方法内部使用的变量:

      编译器永远不会为未初始化的本地分配默认值 多变的。如果您无法在声明它的地方初始化局部变量,请确保在尝试使用它之前为其分配一个值。访问未初始化的局部变量将导致编译时错误。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-07
      • 2014-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-19
      相关资源
      最近更新 更多