双引号内的内容不会打印到System.out

时间:2016-10-17 07:05:39

标签: java

在这个程序中,我使用了System.out.println

双引号内的内容未打印?

public class Demo1 {

    public static void main(String[] args) {

        String s1 = new String("suresh");
        String s2 = "suresh";

        System.out.println("s2==s1::"+s2==s1);
    }
}

预期输出:s2==s1::FALSE
实际输出:FALSE

3 个答案:

答案 0 :(得分:8)

由于运算符优先级,+运算符的优先级高于==运算符。

此表达式:"s2==s1::"+s2==s1与:("s2==s1::" + s2) == s1

相同

换句话说,它检查"s2==s1::" + s2是否等于s1,然后打印该比较的结果(false)。

请改为尝试:

System.out.println("s2==s1::" + (s2 == s1));

答案 1 :(得分:5)

这样做

INTERNAL_IPS = ('127.0.0.1')

与做

相同
System.out.println("s2==s1::"+s2==s1);

由于运算符的优先级:System.out.println(("s2==s1::"+s2)==s1); 运算符的优先级高于+运算符。

因此,您只能获得==true

因为您将字符串文字false与变量s2==s1::连接起来然后将该引用与变量s2进行比较

使用括号将解决问题

答案 2 :(得分:3)

s2==s1放入括号中以更改运算符'优先级。

System.out.println("s2==s1::"+(s2==s1));