gpt4 book ai didi

java - 为什么 Integer.parseInt ("1")++ 在 Java 中不起作用?

转载 作者:IT老高 更新时间:2023-10-28 20:30:17 24 4
gpt4 key购买 nike

我有以下代码行:

suffix = suffix.isEmpty() ? "1" : Integer.toString(Integer.parseInt(suffix)+1);

在后缀已被声明为空字符串 ("") 的 block 中。该 block 正在寻找重复的文件名,并为任何重复的文件添加一个数字,这样它们就不再具有相同的名称了。

上面这行代码编译得很好,但是如果我把它改成这个,

suffix = suffix.isEmpty() ? "1" : Integer.toString(Integer.parseInt(suffix)++);

我得到操作++/--的参数无效。既然 Integer.parseInt() 返回和 int,为什么我不能使用 ++ 运算符?

最佳答案

++ 操作符应该更新其参数的值,所以参数应该在内存中有一个固定 位置来更新。因此,参数应该是一个变量*。在这种情况下,参数是Integer.parseInt(suffix),根本没有固定的内存地址要更新。

直观地说,Integer.parseInt(suffix)++大致等价于Integer.parseInt(suffix) = Integer.parseInt(suffix) + 1。但是 Integer.parseInt(suffix) 只是一个整数值,没有关联到内存中的固定位置,所以上面的代码几乎是一样的,让我们说,32 = 32 + 1。由于您不能为 32 分配新值(Integer.parseInt(suffix) 也不能),因此支持 ++ 没有任何意义运算符。

好消息是这根本不会造成任何问题!用 Integer.parseInt(suffix)+1 代替 Integer.parseInt(suffix)++

* 或者,正如它通常所说的那样,l-value ,或地址值

关于java - 为什么 Integer.parseInt ("1")++ 在 Java 中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8536223/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com