java中ParseInt收到的int和int之间的区别

sac*_*024 5 java parseint

int i = 0;
int k = Integer.parseInt("12");
int j = k;
System.out.println(i+1 + " " + j+1);
Run Code Online (Sandbox Code Playgroud)

奇怪的是收到的输出是

1 121
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚这个基本的区别.请帮我.

Jig*_*shi 11

使用括号如下

System.out.println((i+1) + " " + (j+1));
Run Code Online (Sandbox Code Playgroud)

来自文档

+运算符在语法上是左关联的,无论后来通过类型分析确定它是否表示字符串连接或添加.在某些情况下,需要注意获得所需的结果.例如,表达式:

a + b + c始终被视为含义:(a + b)+ c

将此扩展到您的方案

i+1 + " " + j+1
Run Code Online (Sandbox Code Playgroud)

它成为了

(((i + 1) + " ") + j)+1
Run Code Online (Sandbox Code Playgroud)

因为i是一个int,所以(i + 1) = 1简单的加法

" "String因为((i + 1) + " ")= 1 WITH SPACE(字符串连接)

类似地,当添加j1添加时,将其添加到String因此String 连接中,这证明了您获得的输出是正确的.

看到

  • 他要求区别 (3认同)

Ksh*_*tij 6

这是因为" ".

每当一个String出现时,java都不会在此之后进行任何计算,只需将其作为字符串附加.

所以在你的情况下,i+1计算到1,但" " + j+1在其中有字符串.所以,它只是附加在一起形成 121