我的Java老师说最好使用++ n而不是n ++,我没有看到这背后的逻辑。有谁知道吗?
答案 0 :(得分:20)
++n
递增值并返回新值。
n++
递增值并返回旧。
因此,n++
需要额外的存储空间,因为它必须跟踪旧值,以便在执行增量后返回它。
我希望这两天之间的实际差异可以忽略不计。我知道很多编译器会优化它,所以如果实际上没有使用n++
的返回它们是相同的,虽然我不知道Java会这样做。
答案 1 :(得分:5)
你的Java老师(可能)正在提到这样一个事实:preincrementation 通常 一点点比postincrementation更快。我甚至不确定Java是否属于这种情况,因为我在C课程中学到了这一点。
“我们应该忘记小事 效率,约占97% 时间:过早优化是 万恶之源“
唐纳德克努特
在日常生活中,我会主要根据代码中最有意义的内容来使用前期或后期增量。
答案 2 :(得分:3)
n ++将在操作发生之前递增变量,而++ n仅在操作之后递增变量。
So take x = 1
y = x++
y = 1
x = 2 now
So take x = 1 again
y = ++x
y = 2
x = 2 now
答案 3 :(得分:3)
示例:
int n = 10;
int a = n++; // a is 10
int b = n; // b is 11
int c = ++n; // c is 12
区别在于++n
的值为n + 1
,而n++
的值为n
。
两者都不是更好,他们做同样的事情。你不应该真正依赖程序中两者之间的差异,因为1.)很多人不理解差异而且2.)同样的事情可以更简单地完成。
答案 4 :(得分:2)
他们做不同的事情。
假设n = 10.然后n ++递增n但返回10.
++ n递增n并返回11.
虽然我不确定哪一个需要更多的装配说明。
答案 5 :(得分:1)
递增和递减运算符都有两种形式,在当前语句中使用结果时非常重要:
前缀(++n
或 --n
)增加/减少变量的值
使用前;
后缀(n++
或 n--
)增加/减少变量的值
使用后。
举个例子:
int a = 4;
int b = ++a;
System.out.println(a); // 5
System.out.println(b); // 5
int a = 4;
int b = a++;
System.out.println(a); // 5
System.out.println(b); // 4
答案 6 :(得分:0)
++ n将n加1,然后使用它; n ++使用它然后添加一个。 同样适用于 - 。
答案 7 :(得分:0)
有趣的例子说明了差异:
public class Main {
public static void main(String[] args) {
for (int i=0; i<5; /*not incrementing here*/ )
System.out.println(i++);
}
}
输出: 0 1 2 3 4
public class Main {
public static void main(String[] args) {
for (int i=0; i<5; /*not incrementing here*/ )
System.out.println(++i);
}
}
输出: 1 2 3 4 5
请注意,for-loop都不会执行增量,因为它不重要。