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 不一定,如果您不知道它分别称为 postincrement 和 preincrement。如果你知道就容易。仍然是重复的,这已经被问过很多次了。 @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有啥区别[重复]的主要内容,如果未能解决你的问题,请参考以下文章