带字符串和整数的评估单

  String s1 = "six" + 3 + 3;
  String s2 = 3 + 3 + "six:";
  System.out.println(s1);
  System.out.print(s2);

输出:

  six33
  6six:

为什么第一个未添加3 + 3,而第二个又添加了?

liuweiwangyujia 回答:带字符串和整数的评估单

操作顺序很重要

在第一个连接中,连接方式如下:

String s1 = "six" + 3 + 3;
            "six3" + 3  // string plus int return string
            "six33"     // string plus int return string

第二个:

String s2 = 3 + 3 + "six:";
            6 + "six"  // int plus int return int
            "6six"     // int plus string return string

有关更多详细信息,请阅读Operators15.7. Evaluation Order的文档

  

对除赋值运算符外的所有二进制运算符进行求值   从左到右;赋值运算符从右到左求值。

,

在S1中,编译器读取(六个)字符,然后读取并读取。数字3的数值不能与字符文本(六个)相加,不能作为字符添加到x后面,然后读取3并在第三个后面添加。

在s2中,他读取3,然后3可以执行编译器收集的过程并直接打印6,然后在编号6之后将打印无法收集的读取(六个)

,

顺序很重要。在第二种情况下,首先进行算术运算和字符串连接,结果为6six

本文链接:https://www.f2er.com/3085438.html

大家都在问