Java 字符串整数加法

Java Integer addition with String

使用下面的代码示例,为什么第一次加法 (1/2+1/2) 打印 0 而第二次加法打印 00。

System.out.println(1/2+1/2+"=1/2+1/2");
System.out.println("1/2+1/2="+1/2+1/2); 

输出:

0=1/2+1/2

1/2+1/2=00

整数数学(int 1 除以 int 2 是 int 0,如果你想要浮点结果将 1 和 2 中的一个或两个转换为浮点类型)和运算顺序,第二个例子是String 串联。编译器将其转换为

 System.out.println(new StringBuilder("1/2+1/2=").append(1/2).append(1/2));

然后你得到

 System.out.println(new StringBuilder("1/2+1/2=").append(0).append(0));

第一条语句"System.out.println(1/2+1/2+"=1/2+1/2");"打印 0 因为从 1/2 获得的整数值为零。余数被丢弃,因为 1/2 等于 0.5,所以 .5 被丢弃。 第二条语句 "System.out.println("1/2+1/2="+1/2+1/2);"由于连接符号,打印出 00。在第二个语句中,第一个整数 1 显示为 +1,因此该语句实际上被读取为 (+1/2 +1/2),这就是为什么它 returns 00。 如果第二个语句是这样设置的:

System.out.println("1/2+1/2="+ (1/2+1/2));

输出将与第一条语句相同。

java 假设除法的结果是整数,因为它的成员是整数。对于每个除法的浮动结果(0.5),除数或被除数应为 float

类型

System.out.println("1/2+1/2="+(1/2.0+1/2.0));

表达式从左到右求值。在第一种情况下,它执行 int+int(即 0),然后是 int + "= String",即 String tmp = "0= String"。在另一种情况下,你有'"String =" + intwhich becomes"String =int"to which you append one moreint`。因此你打印 String, "0" 和 "0".