Java 在计算语句时如何处理变量?

Ant*_*1t3 0 java

基本上我要问的是是否可以在 if 语句中使用相同的变量。在语句中途为其分配一个新值,这样我就不必初始化新变量。我知道这可能是可怕的做法,但我只是好奇是否可以做到。

这是我迄今为止所得到的最接近的结果:

if(curID + 1 != (curID = myScanner.nextInt())) {
    System.out.print(j++);
    break;
} else {
    j++;
}
Run Code Online (Sandbox Code Playgroud)

抱歉,如果这是重复的,但我似乎找不到任何内容。很可能是因为我忘记了技术术语。

编辑:忘了说,当我运行它时,我认为它只是为两个实例使用了新变量,因为循环刚刚中断。但我可能是错的。

use*_*363 5

写作没有任何好处

if(curID++ != (curID = myScanner.nextInt())) {
Run Code Online (Sandbox Code Playgroud)

相对

if(curID != (curID = myScanner.nextInt())) {
Run Code Online (Sandbox Code Playgroud)

因为存储回的值++将在后续赋值中丢失。你正在考虑这样做表明你对这些事情的含义很模糊。

编辑:根据评论中的讨论,您也对 的前缀和后缀形式之间的区别感到困惑++。后缀形式的计算结果为增量发生之前的值。

但无论如何,如果没有嵌入作业,整个事情写得更好。

int prevId = curId;
curId = myScanner.nextInt();
if (prevId + 1 != curId) {
     ...
}
Run Code Online (Sandbox Code Playgroud)

编辑:添加 以+ 1使代码按照注释中的讨论运行,与最初编写的代码不同。

您对“不必初始化新变量”的担忧是错误的。添加prevId成本几乎为零。

按照我的建议编写它意味着您不必想知道 Java 可以做什么或不可以做什么(尽管您可以很容易地从在线 Java 语言规范中确定它),因为它现在是显而易见的。这是编程中最重要的事情。