java执行if语句测试中使用的方法吗?
免责声明:我是一个新的程序员,只有几个月的经验,所以我道歉,如果这个问题是琐碎的
在Java中,if语句测试中的方法是否执行? 例如,在这段代码中,我有一个LinkedListQueue类型的waitlist变量,它是我为建模队列数据结构而编写的一个类,具有enqueue()(add)、dequeue()(remove)、size、setCapacity和isEmpty()的方法。方法返回从队列中删除的对象。waitlist变量是int类型的LinkedQueue对象。我想遍历队列的每个元素,检查它是否等于3,如果等于3,我将删除它。当执行if语句测试的代码行时,它是否删除队列中的对象
for (int i = 0; i < waitlist.size(); i++) {
if (waitlist.dequeue() == 3) {
waitlist.dequeue();
}
}
# 1 楼答案
除非条件短路->;否则
if-statement
的条件内的方法调用将执行;你有一个OR,第一个片段已知为真,第二个片段未被检查,或者你有一个and,第一个片段已知为假,第二个片段未被检查这些值也可以是其他方法调用,如:
基本上,防止
if-statement
中的方法调用执行的唯一方法是在执行之前短路或引发异常如果你确实需要调用一个方法,那么考虑一个没有副作用的方法,比如只查看值,而不是从列表中删除它。
ArrayDeque
实现和LinkedList
实现似乎非常适合您的用例# 2 楼答案
您要做的是取消排队并检查结果是否为3,如果是,请再次取消排队。如果你想使用它,你基本上跳过了下一个
3之后的任何内容都将被删除;简单明了
使用尺寸时要小心,因为在取消项目排队时,尺寸可能会发生变化
输出
LinkedListQueue。爪哇
基于this,但我把它抽象了
排队。爪哇
收藏。爪哇
QueueFullException。爪哇