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

时间:2012-06-13 05:11:01

标签: java parseint

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

奇怪的是收到的输出是

1 121

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

9 个答案:

答案 0 :(得分:11)

使用括号如下

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

来自docs

  

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

     

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 (String concatenation

同样,当添加j和最后1时,会将其添加到String,从而发生String 连接,这证明了你得到的输出。

查看

答案 1 :(得分:6)

这是" "

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

因此,在您的情况下,i+1计算为1,但" " + j+1中包含字符串。因此,它只是附加在一起形成121

答案 2 :(得分:3)

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

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

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

答案 3 :(得分:2)

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

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

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

答案 4 :(得分:2)

使用" "之后的表达式将被评估为字符串。

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

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

答案 5 :(得分:1)

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

答案 6 :(得分:1)

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

答案 7 :(得分:1)

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

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

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

答案 8 :(得分:0)

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