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