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

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

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字符串拥有最高的优先级。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 最先接触编程的知识是在大学里面,大学里面学了一些基础的知识,c语言,java语言,单片机的汇编语言等;大学毕...
    oceanfive阅读 8,445评论 0 7
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 9,711评论 0 13
  • 从敦煌返回兰州,王芳的同学翁总来接我们,后面的行程翁总全程安排和陪同,随同翁总一起还有他的三位黄石朋友宋哥...
    蒋明涛阅读 3,258评论 4 0
  • 2017年11月11日 晴 儿子昨天就回来说今天开家长会,我说好的,儿子说,妈妈老师肯定能批评我,我说为...
    时康轩妈妈阅读 1,441评论 0 0
  • 前言 总括: 本文通过实例讲解CSS中最大的难点之一,行内元素的布局,主要是挖掘line-height和verti...
    秦至阅读 5,916评论 0 1

友情链接更多精彩内容