int i = 0;
int k = Integer.parseInt("12");
int j = k;
System.out.println(i+1 + " " + j+1);
接收奇怪接收的输出是差异和INT由parseInt函数在Java
1 121
我不能找出这一基本差别。请帮帮我。
int i = 0;
int k = Integer.parseInt("12");
int j = k;
System.out.println(i+1 + " " + j+1);
接收奇怪接收的输出是差异和INT由parseInt函数在Java
1 121
我不能找出这一基本差别。请帮帮我。
使用括号如下
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
使用Space(字符串级联)
类似地,当j
和最后1
加入,其被添加到String
因此String
级联取地方,这证明你得到的输出。
见
int i = 0;
int k = Integer.parseInt("12");
int j = k;
System.out.println(i+1 + " " + (j+1));
基本上当你把+ “” +后,这个Java只是追加值的字符串。
当你把(j + 1)放在方括号中时,它的优先级会变高,并且它首先执行并执行求和运算。
那就是" "
。
每当一个字符串到来时,java并没有做任何计算后,只是将其附加为字符串。
所以在你的情况下,i+1
计算为1
,但" " + j+1
有字符串在其中。因此,它只是附加在一起形成121
您看到此行为的原因是+
运算符的顺序从左到右进行计算。从而如果括号被评价:
System.out.println((((i + 1) + " ") + j) + 1);
的第一操作员将两个int
值并产生int
值。接下来的+
将int
添加到String
并产生String
。之后,一切都是字符串连接。你可以引入你自己的圆括号来得到你想要的结果。
+1。最佳答案。 –
是的+1,这的确是最好的答案 – mprabhat
当您使用" "
之后的表达式被评估为字符串。
使用括号(
和)
围绕一个表达式可以解决手头的问题。
System.out.println(i+1 + " " + (j+1));
+
运算符重载加法和字符串连接你在做什么是字符串连接,而不是加法。对于执行除了使用括号。
parseint基本上会返回int(查看Java API),并且在Java中只有一个int类型。在这个例子中你使用了“”,其中java将它视为字符串。在任何操作中,确保你不要混淆字符串与计算。始终使用括号将字符串从计算中分离出来。
这是因为在+运营商已经离开关联,并与琴弦的重载函数,所以当你有这样的
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)。这通常用于收集框架工作,用于将原始数据类型转换为对象,反之亦然
非常感谢..不知道.. – sachinjain024
他是要求区别 –
不客气,另请参阅我添加的链接在答案 –