Java中n ++ VS ++ n的区别

时间:2011-01-20 21:24:06

标签: java

我的Java老师说最好使用++ n而不是n ++,我没有看到这背后的逻辑。有谁知道吗?

8 个答案:

答案 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都不会执行增量,因为它不重要。