Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 输出中未打印字符串_Java_String_Println - Fatal编程技术网

Java 输出中未打印字符串

Java 输出中未打印字符串,java,string,println,Java,String,Println,我尝试运行此代码,但在控制台中没有得到字符串输出。打印的唯一值是r1==r2结果,即false 这里的问题是,我希望输出结果是:false,为什么刚刚打印出来的结果是false 我也知道应该使用.equals,我只是想知道为什么在给定的场景中结果会如此 如果有人能指出相关文档并帮助解释为什么会出现这种行为,那就太好了。事实上,输出是错误的,因为首先进行连接,结果是:hello,然后将其与返回false的r2 hello进行比较。 这就是为什么您在控制台中看到false 如果您想看到Result:

我尝试运行此代码,但在控制台中没有得到字符串输出。打印的唯一值是r1==r2结果,即false

这里的问题是,我希望输出结果是:false,为什么刚刚打印出来的结果是false

我也知道应该使用.equals,我只是想知道为什么在给定的场景中结果会如此


如果有人能指出相关文档并帮助解释为什么会出现这种行为,那就太好了。

事实上,输出是错误的,因为首先进行连接,结果是:hello,然后将其与返回false的r2 hello进行比较。 这就是为什么您在控制台中看到false

如果您想看到Result:true,您需要使用equals而不是==因为这就是我们在java中比较字符串的方式。请参阅下面的帖子以了解差异:

如果您真的想使用==来比较它们,则需要添加括号,以便在连接之前先进行比较

String r1 = "hello";
String r2 = "hello";
System.out.println("Result: " + r1 == r2);

事实上,输出为false,因为首先进行连接,因此它是Result:hello,然后将其与返回false的r2hello进行比较。 这就是为什么您在控制台中看到false

如果您想看到Result:true,您需要使用equals而不是==因为这就是我们在java中比较字符串的方式。请参阅下面的帖子以了解差异:

如果您真的想使用==来比较它们,则需要添加括号,以便在连接之前先进行比较

String r1 = "hello";
String r2 = "hello";
System.out.println("Result: " + r1 == r2);

因为它被当作

    String r1 = "hello";
    String r2 = "hello";
    System.out.println("Result: " + r1 == r2); // output: "false"
    System.out.println("Result: " + r1.equals(r2)); // output: "Result: true"
    System.out.println("Result: " + (r1 == r2)); // output: "Result: true"
这是错误的。它是以这种方式处理的,因为+的优先级高于==

你需要做的是得到字符串以及

("Result: " + r1 ) == r2

这将为您提供结果:true

,因为它被处理为

    String r1 = "hello";
    String r2 = "hello";
    System.out.println("Result: " + r1 == r2); // output: "false"
    System.out.println("Result: " + r1.equals(r2)); // output: "Result: true"
    System.out.println("Result: " + (r1 == r2)); // output: "Result: true"
这是错误的。它是以这种方式处理的,因为+的优先级高于==

你需要做的是得到字符串以及

("Result: " + r1 ) == r2
这将为您提供结果:true

要比较字符串并以您想要的方式打印,您应该使用方法equals。像这样:

System.out.println("Result: " + (r1 == r2));
要比较字符串并按所需方式打印,应使用方法equals。像这样:

System.out.println("Result: " + (r1 == r2));

字符串与Java@kembytes中的.equals进行比较,但是像这样实例化的两个字符串指向JVM中字符串池中的同一位置,因此它应该返回“true”-完整的解释已经作为答案发布了这不是==而不是equals的问题。事实上,r1==r2是正确的。这是运算符顺序为+和==的问题。字符串结果:+r1不等于r2。字符串与Java@kembytes中的.equals进行比较,但两个像这样实例化的字符串指向JVM中字符串池中的同一位置,因此它应该返回“true”-完整的解释已作为答案发布这不是==而不是equals的问题。事实上,r1==r2是正确的。这是运算符顺序为+和==的问题。字符串结果:+r1不等于r2。