java - java实例数组不需要初始化数组大小吗?
问题描述
下面是我的代码。这是具有实例数组队列的任何抽象类。我从不在任何地方分配数组大小。但我仍然可以使用数组并且可以迭代以将数据添加到数组中。这怎么可能?
public abstract class Operations {
int queue[];
int head;
int tail;
public abstract String enqueue(int value);
public abstract String dequeue();
public abstract String peek();
public abstract String delete();
public abstract boolean isEmpty();
public abstract boolean isFull();
public abstract void display();
}
解决方案
简化的变量queue
只保存数组开头的内存位置的地址,或者在这种情况下null
在开头
在您的代码中的某个时刻,您为其分配一个新数组(否则您将获得一个NullPointerException
)new int[..]
,然后使用它将分配所需的内存并将其分配给变量。
更新:我已经执行了 OP 的代码,并且NullPointerException
在调用enqueue
.
Choose option:
1. Enqueue
2. Dequeue
3. Peek
4. Delete
5. Exit
1
Enter a value to enqueue:
12
Exception in thread "main" java.lang.NullPointerException
at test.Queue.isFull(Queue.java:16)
at test.Queue.enqueue(Queue.java:50)
at test.Test.main(Test.java:21)
推荐阅读
- vim - 如何替换vim中被阻止文本中的所有相同文本?
- c++ - 如何继承返回对当前对象的引用的方法?
- azure - Azure Monitor (Log Analytics) 查询限制 10,000,无法看到我们可以配置的任何地方
- python - 我需要数据中带有索引名称的过滤值
- c++ - 如何通过它的类属性删除一个对象,并返回它的对象值?
- time - 如何在pinescript中将任何功能限制为所需的天数
- javascript - 将 typescript 与 cleave.js 一起使用时,类型“EventTarget 和 HTMLInputElement”错误中不存在属性“rawValue”
- ruby-on-rails - Mongoid 将结果聚合到 Rails 模型的实例中
- c# - Serilog 动态丰富上下文
- mysql - 在同一个表上具有多个内部连接的 MySQL 查询