繁体   English   中英

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

[英]Difference between int and int received by ParseInt in java

int i = 0;
int k = Integer.parseInt("12");
int j = k;
System.out.println(i+1 + " " + j+1);

奇怪的是收到的输出是

1 121

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

使用括号如下

System.out.println((i+1) + " " + (j+1));

来自文档

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

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

将此扩展到您的方案

i+1 + " " + j+1

它成为了

(((i + 1) + " ") + j)+1

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

" "是一个String因此((i + 1) + " ") = 1 WITH SPACE (字符串连接

类似地,当添加j和last 1 ,它被添加到String因此会发生String 连接 ,这证明了你得到的输出是正确的。

看到

这是因为" "

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

所以在你的情况下, i+1被计算为1 ,但是" " + j+1有一个字符串。 所以,它只是附加在一起形成121

您看到此行为的原因是+运算符的序列是从左到右计算的。 所以它被评估为括号:

System.out.println((((i + 1) + " ") + j) + 1);

第一个运算符添加两个int值并生成一个int值。 下一个+将一个int添加到String并生成一个String 在那之后,一切都是字符串连接。 您可以引入自己的括号来获得所需的结果。

    int i = 0;
    int k = Integer.parseInt("12");
    int j = k;
    System.out.println(i+1 + " " + (j+1));

基本上当你在这个java之后加上+“”+只是将值附加为字符串。

当你把(j + 1)放在括号中时,它的优先级会变高,然后先执行它并执行求和运算。

当您使用" "的表达式被评估为字符串。

在表达式周围使用括号()可以解决手头的问题。

System.out.println(i+1 + " " + (j+1));

+运算符重载以进行添加和字符串连接您正在执行的是字符串连接而不是添加。使用括号执行添加。

parseint基本上会返回int(查看Java API),Java中只有一个int类型。 在这个例子中,您使用了“”,其中java将其视为字符串。 在任何操作中,请确保不要将字符串与计算混淆。 始终使用括号将String与计算分开。

之所以会发生这种情况,是因为+运算符已经离开了关联性并且有一个带字符串的重载函数,所以当你有这个时

int i = 0; int k = Integer.parseInt("12"); int j = k; i+1 + " " + j+1

它首先求和i + 1得到1然后求和1 + " " ,它使用它的重载函数来连接1和“”所以它给出一个值为“1”的字符串。 之后,它总和为"1 " + j并且由于其中一个操作数是一个字符串,它会执行相同的行为,依此类推。

Interger.parseInt(String str)是一个包装类方法,用于将String obj类型转换为原始数据类型(int)。 这通常用于收集框架工作,用于将原始数据类型转换为对象,反之亦然

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM