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 more
int`。因此你打印 String, "0" 和 "0".
使用下面的代码示例,为什么第一次加法 (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 more
int`。因此你打印 String, "0" 和 "0".