55. 注意字符串的位置 - 草稿

2018-03-10  本文已影响0人  ggr

接着讨论关于字符串的问题,现在有一个程序如下:

public static void main(String[] args) throws Exception{
      String str1 = 1 + 2 + "apple";
      String str2 = "apple"+1+2;
      System.out.println(str1 == "12apple");
      System.out.println(str2 == "apple12");
 }

那么现在请问程序的运行结果如何?都为 true
我们看看运行结果:
 false
 true

貌似一切都不是我们想象的那么简单,当然也没有想象中的那么复杂。
原来在java中对"+"的处理机制是在计算表达式的时候,只要遇到String字符串,则所有的数据都会转化为String类型进行处理,如果是原始类型,就直接拼接,如果是类类型,就调用toString()方法进行返回值的拼接。

String str = "123";
str = str+new ArrayList();

上面就是通过ArrayList对象的toString()方法的返回值然后和str进行拼接。回到我们之前的问题,对于str1字符串,Java执行顺序是从左到右的,先执行1+2,然后再和字符串的拼接,结果就是"3apple",其形式类似于如下:

String str1 = (1+2)+"apple";

而对于str2字符串而言,第一个参与运算的是字符串,后面的运算都要转换为字符串类型进行运算,所以加1的结果就是"apple1",然后再加2,所以最后的运算结果是"apple12"

备注:在"+"表达式中,String字符串拥有最高的优先级。

上一篇 下一篇

猜你喜欢

热点阅读