问答详情
源自:2-2 Java 中字符串的不变性

练习的14行这样写为什么是直接输出的false?

System.out.println("s1和s3内存地址相同吗?"+s1==s3);


提问者:qq_90後丨双子座_03454202 2016-06-22 00:44

个回答

  • frgo_03360772
    2016-06-22 01:41:45

    这个应该是运算符优先级的问题,

    "s1和s3内存地址相同吗?"+s1==s3

    正确的操作是System.out.println("s1和s3内存地址相同吗?"+(s1==s3));先判断s1==s3是真假,然后与前面的字符串拼接;

    如果后面的等式判断不加括号的话,会形成("s1和s3内存地址相同吗?"+s1)==(s3)的判断;前面的字符串与s1的拼接与后面的字符串s3肯定不是相同的,所以等式判断返回false-----