Java中的x++和++x有啥区别[重复]

Posted

技术标签:

【中文标题】Java中的x++和++x有啥区别[重复]【英文标题】:What is the difference between x++ and ++x in Java [duplicate]Java中的x++和++x有什么区别[重复] 【发布时间】:2013-02-12 03:05:00 【问题描述】:

Java中的x++和++x有什么区别

谁能通过参考下面的代码告诉我上面的区别,

class Example
    public static void main(String args[])
        int x=10;
        int y;
        y=x++;  //Prints 11     10 
        System.out.println(x+"\t"+y)
    


class Example
    public static void main(String args[])
        int x=10;
        int y;
        y=++x;  //Prints 11     11 
        System.out.println(x+"\t"+y)
    

【问题讨论】:

与***.com/q/1094872/799558重复 @SotiriosDelimanolis 不一定,如果您不知道它分别称为 postincrementpreincrement。如果你知道就容易。仍然是重复的,这已经被问过很多次了。 @MichaelKjörling 不过你不需要直呼它的名字。只需将 i++ vs ++i 放在某个搜索引擎中即可。 @MichaelKjörling 其实很简单,看看google search 【参考方案1】:

不同之处在于,在第一种情况下 (x++),Java 首先解决分配问题,然后递增 x。在另一种情况下 (++x),Java 首先解析增量,然后解析赋值。 在下面的代码中你会看到不同之处:

@Test
public void test1() 
    int x = 1;
    int y = 1;

    y = 2 + x++;
    assertEquals(2, x);
    assertEquals(3, y);


@Test
public void test2() 
    int x = 1;
    int y = 1;

    y = 2 + ++x;
    assertEquals(2, x);
    assertEquals(4, y);

如您所见,x 总是会递增,但区别在于表达式解析的顺序。

希望对你有用!

【讨论】:

【参考方案2】:

前后增量。分别在赋值前递增和赋值后递增。

【讨论】:

【参考方案3】:

++x预增量。即 x 的值先递增,然后赋值给 x。

x++后增量。即 x 的值先赋值后递增。

y=x++;

本质上与

相同
y =x;
x= x+1;

y=++x;

相同
y= (x+1);

【讨论】:

@MichaelKjörling 对不起,我不明白。为什么要将 y 重新分配给 x??【参考方案4】:

y=x++ 将 x 分配给 y,然后递增 x。

y=++x 递增 x,然后将其分配给 y。

【讨论】:

以上是关于Java中的x++和++x有啥区别[重复]的主要内容,如果未能解决你的问题,请参考以下文章

x++和++x有啥区别[重复]

Java泛型中的“超级”和“扩展”有啥区别[重复]

Java中的implements和extends关键字有啥区别[重复]

C# 中的逻辑和条件 AND、OR 有啥区别? [复制]

Ruby中的每个方法和收集方法有啥不同[重复]

WPF:“名称”和“x:名称”有啥区别? [复制]