Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 增量运算符在开关箱中如何工作?_Java_Switch Statement - Fatal编程技术网

Java 增量运算符在开关箱中如何工作?

Java 增量运算符在开关箱中如何工作?,java,switch-statement,Java,Switch Statement,它从案例10:打印输出,但如何打印x=11?在哪一行之后,它增加x int x = 10; switch (x++) { case 10: System.out.println("case 1 ::: "+x); break; case 11: System.out.println("case 2 ::: "+x); break; default: System.out.println("default ::: "+x); } 输出 ca

它从
案例10:
打印输出,但如何打印
x=11
?在哪一行之后,它增加
x

int x = 10;
switch (x++) {
case 10:
        System.out.println("case 1 ::: "+x);
        break;
case 11:
    System.out.println("case 2 ::: "+x);
    break;
default:
    System.out.println("default ::: "+x);
}
输出

case 1 ::: 11

递增后运算符
x++
递增
x
,但返回先前的
x
-
10
。因此,
switch
语句获取值
10
(这是
x++
表达式的值),并执行
案例10:
的块,此时
System.out.println(“案例1:”+x)
打印
x
-
11

x++是增量后的值。因此,开关的初始值为x(10),然后且仅在此之后递增

这就是为什么在案例1和案例11中,您的问题“在哪一行之后递增x的值?”表明您完全忽略了递增运算符的点

它立即增加值。增量不会延迟到任何语句的结尾

例如,如果
x=10
,语句
y=x+++x+++x++
将计算
y=10+11+12
,结果是
y=33
x=13

相反,语句
y=++x+++x+++x
将计算
y=11+12+13
,结果是
y=36
x=13

如您所见,增量后运算符和增量前运算符都会立即影响正在递增的变量的值。区别在于表达式是在增量之前(之前)还是之后(之后)使用值


有关更复杂的示例,请参见此答案:

使用与案例1匹配的
x=10
switch
语句进行求值,并且后增量运算符同时将其值递增1,因此
x
变为
11
。这就是为什么您会在Post中得到结果
案例1:::11

第一个开关求值,然后只增加x。 如下

x = 10;
switch (x++){...}
开关将首先评估

案例10:将被选中则只有
x
将增加1
x
变为11)

然后执行case块中的语句(o/p将==case1:::11)

//希望通过与之前的增量条件进行比较,您可能会更清楚

x = 10;
switch (++x){...}
x
将首先递增(
x
变为11)

然后对开关条件进行评估

案例11:将被选中


然后执行case块中的语句(o/p将==case2:::11)

Increment运算符的工作方式与它在所有其他语句中的工作方式相同。对于
switch
语句,它的行为没有什么不同。首先使用x的值,它是10,然后递增,在递增后变成11。。。为了更好地理解read post incrementer和pre incrementer,Java教程中介绍了增量运算符。阅读精细手册。如果它立即增加了x的值,那么为什么选择案例10:?因为表达式使用了before增量值。如果需要后增量值,请使用
++x
,而不是
x++
。这就是二者之间的区别。因此不使用-->开关(x++)对其求值??这里有一个后增量运算符,它遵循使用后更改的原则。它使用初始值x(即10),并立即将其更新为11。