Java 我和我的行为是否与++;我和我++;?
我最近查了一下++I和I++之间的区别,发现在for循环中这显然不重要,但在本例中它确实重要:Java 我和我的行为是否与++;我和我++;?,java,loops,for-loop,stack,Java,Loops,For Loop,Stack,我最近查了一下++I和I++之间的区别,发现在for循环中这显然不重要,但在本例中它确实重要: int i = 3; int a = i++; // a = 3, i = 4 int b = ++a; // b = 4, a = 4 这对我和我都是一样的吗?我很好奇,因为我遇到了以下练习: // pops the first non-null element in a stack public E popFirstNonNull() throws EmptyStackException {
int i = 3;
int a = i++; // a = 3, i = 4
int b = ++a; // b = 4, a = 4
这对我和我都是一样的吗?我很好奇,因为我遇到了以下练习:
// pops the first non-null element in a stack
public E popFirstNonNull() throws EmptyStackException {
while ( (top >= 0) && ( S[top] == null ) ) {
top--;
}
if ( top >= 0 ) {
E topNonNull = S[top];
S[top--] = null; //for garbage collection
return topNonNull;
}
else {
throw new EmptyStackException();
}
}
如果++i/i++
和--i/i--
的行为相同,那么此行不应该:S[top-->]=null
更改为:S[--top]=null
是,--i表示计算前i=i-1,计算后i--。所以它类似于++i和i++。是的,--我的意思是在计算之前i=i-1,在计算之后i。所以它类似于++i和i++。否
代码的作用是
- 记住
topNonNull
- 清空顶部元素,然后
- 减少
行中的顶部“指针”S[top-->=null
- 返回
topNonNull
S[--top]=null
,那么您将清空一个不同的元素,这不是您想要的。否
代码的作用是
- 记住
topNonNull
- 清空顶部元素,然后
- 减少
行中的顶部“指针”S[top-->=null
- 返回
topNonNull
S[--top]=null
,那么您将清空不同的元素,这不是您想要的。你们是对的,两者的影响(顶部和顶部)在你们的案例中是不同的
S[top--] = null; //null will be assigned to current index() and than it will decrease top.
及
++i/i++和--i/i--的行为方式相同。你们是对的,两者的影响(顶部和顶部)在你们的案例中是不同的
S[top--] = null; //null will be assigned to current index() and than it will decrease top.
及
是的,他们的行为是一样的 关于这个例子:不,不应该改变。 意义
S[top--] = null
将刚读取的值替换为null。
因此:
首先读取s[top]并将其赋值给topNonNull,然后将刚读取的值替换为null,因此top必须保持不变,然后可以将其减小到下一个非null值。是的,它们的行为相同 关于这个例子:不,不应该改变。 意义
S[top--] = null
将刚读取的值替换为null。
因此:
首先读取s[top]并将其分配给topNonNull,然后将刚读取的值替换为null,因此top必须保持不变,然后可以将其减少到下一个非null值。考虑使用
top==0
输入该分支,以及您建议的更改的作用。前一行是E topNonNull=s[top]
所以您想要null
的值是S[top]=null;顶部--代码>@PeterLawrey谢谢,我就是这么想的!但是我假设S[top--]在这种情况下也可以工作,因为它仍然会使旧值(即top)为null,对吗?@user3281466是的。这就是为什么您只想在使用该值后递减。请考虑使用top==0
输入该分支,以及您建议的更改的作用。前一行是E topNonNull=S[top]
所以您想要null
的值是S[top]=null;顶部--代码>@PeterLawrey谢谢,我就是这么想的!但是我假设S[top--]在这种情况下也可以工作,因为它仍然会使旧值(即top)为null,对吗?@user3281466是的。这就是为什么你想减量只有在你使用了这个值之后。谢谢。然后根据练习写S[top]和写S[top--]是一样的,对吗?S[top]和S[top--]会返回相同的东西,是的。但我不认为这是一样的,因为顶部减少了。如果我是对的,那就是你要找的。谢谢。然后根据练习写S[top]和写S[top--]是一样的,对吗?S[top]和S[top--]会返回相同的东西,是的。但我不认为这是一样的,因为顶部减少了。如果我是对的,那就是你要找的。