【问题标题】:Java Integer addition with StringJava Integer 与 String 的加法
【发布时间】:2016-04-02 16:49:06
【问题描述】:

下面的代码示例为什么第一个加法 (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

【问题讨论】:

  • 因为它是从左到右的。第一个是1/2,即0(整数除法),然后1/2又是0。所以0+0 = 0 然后它将连接到字符串1/2+1/2。对于第二个,它将 concat(1/2) 到 String "1/2+1/2=` 其中 (1/2) 再次为 0。然后再次为下一个

标签: java string addition


【解决方案1】:

整数数学(int 1 除以 int 2 是 int 0,如果您想要浮点结果将 1 和 2 中的一个或两者强制转换为浮点类型)和运算顺序,第二个示例是 @987654321 @ 串联。编译器把它变成

 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));

【讨论】:

    【解决方案2】:

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

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

    输出与第一条语句相同。

    【讨论】:

      【解决方案3】:

      表达式从左到右计算。在第一种情况下,它是int+int(即0),然后是int + "= String",即String tmp = "0= String"。在另一种情况下,您有 '"String =" + intwhich becomes"String =int"to which you append one moreint`。因此,您打印字符串、“0”和“0”。

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 2012-05-26
          • 2016-10-14
          • 1970-01-01
          • 2017-07-18
          • 1970-01-01
          • 1970-01-01
          • 2019-05-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多