【问题标题】:concatenation (string with int) value in JavaJava中的连接(带int的字符串)值
【发布时间】:2021-08-29 19:27:23
【问题描述】:

我想知道为什么运算的结果是:200and100100,而不是我期望的(错误假设)200and200,我想知道这样一个结果的机制。

public class att {

    public static void main(String[] args) {

        String string1 = 100 + 100 + "and" + 100 + 100;
        System.out.println(string1);

    }
}

【问题讨论】:

  • 求值顺序,一旦达到String,整个操作就变成String连接。您可以使用() 强制评估顺序。或者您可以使用格式化的String。喜欢String string1 = String.format("%dand%d", 100+100, 100+100);

标签: java string integer concatenation


【解决方案1】:

规则是从左到右评估

int + int    > addition      > int
String + int > concatenation > String
int + String > concatenation > String

你的情况

int : 100
int with int : 100 > 200
int with String: "and" > 200and
String with int: 100 > 200and100
String with int: 100 > 200and100100

【讨论】:

    【解决方案2】:

    您获得的输出与运算符优先级以及评估顺序有关。在没有其他规则的情况下,即更高优先级的运算符,运算符按从左到右的顺序计算。

    这里,因为所有运算符的优先级相同,因为它们是相同的运算符:+,所以第一个运算被计算。既然涉及到String,那就是String拼接,结果是String;下面的 + 也是类似的。

    【讨论】:

      【解决方案3】:

      由于您只使用+,因此它是从左到右解释的。
      如果你在右边加上括号,你应该得到你所期望的。

      String string1 = 100 + 100 + "and" + (100 + 100);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-10-03
        • 1970-01-01
        • 2012-08-28
        相关资源
        最近更新 更多