我在理解这种行为时遇到了问题:
我的意图是numberOfFilesNotFolders
增加1。
假设该文件不是目录。
案例1:
int numberOfFilesNotFolders = 0;
numberOfFilesNotFolders = file.isDirectory() ? numberOfFilesNotFolders : numberOfFilesNotFolders++;
numberOfFilesNotFolders
保持0
案例2:
int numberOfFilesNotFolders = 0;
numberOfFilesNotFolders = file.isDirectory() ? numberOfFilesNotFolders : numberOfFilesNotFolders+1;
numberOfActualFilesNotFolders
递增并变为1
我不明白为什么案例1不起作用。我看待它的方式,它应该像这样工作:
file.isDirectory()
解析为false numberOfFilesNotFolders++
将值0存储到numberOfFilesNotFolders
numberOfFilesNotFolders++
执行增量步骤3.然后应将numberOfFilesNotFolders
的值更改为1,然后应将其设置。
但实际上numberOfFilesNotFolders
保持为0.而且我不明白。
如果有人可以详细说明为什么它保持为0,那就太棒了。
招呼 工具
答案 0 :(得分:2)
因为它是一个后期增量?基本上你的陈述被评估为。
numberOfFilesNotFolders = numberOfFilesNotFolders
这是实际发生的步骤。
file.isDirectory()
我们评价为真numberOfFilesNotFolders++
返回临时变量0并将numberOfFilesNotFolders
递增1。numberOfFilesNotFolders++
操作的临时值分配给numberOfFilesNotFolders
,numberOfFilesNotFolders
再次等于0
。如果您使用preincrement将语句更改为++numberOfFilesNotFolders
,您将获得预期结果。
否则你也可以只使用if语句而不是使用三元运算符。