java equals用法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java equals用法相关的知识,希望对你有一定的参考价值。
public class Test
public static void main(String[] args)
String s1 = "abc";
String s2 = "abc";
String s3 = s1.substring(0);
System.out.println(s2==s3+","+s2.equals(s3));
输出 false 怎么回事
可以看出s1==s2 true
String s3 = s1.substring(0); 你的参数是0,情况很特殊,我看了一下源码,它返回的是this,
所有s3==s1==s2;
s2.equals(s3) 比较内容,没争议,true。
你现在的问题是算符的优先级问题。追问
s2.equals(s3) true的结果没有输出啊
追答System.out.println( (s2==s3) +","+s2.equals(s3)); 你没加括号,优先级问题。
参考技术A 去看看equals的值比较,和引用比较吧。s2是一个值,s3是s1的引用,equals比较的是值和值直接的比较,你这个当然返回false了 参考技术B “==”比较两个变量本身的值,即两个对象在内存中的首地址。
“equals()”比较字符串中所包含的内容是否相同。 参考技术C s1.substring(0);将新的对象赋予s3,
s2==s3;比较的是两个对象是否相等,false
s2.equals(s3)比较两个值是否相等,true 参考技术D System.out.println((s2==s3)+","+s2.equals(s3));
--------- 这才是你想要的结果
[equals和hasNext的java用法
为什么此代码不停止? “ scanner.equals(null)”和“ scanner.hasNext()== false”不是同一角色还是至少是同一角色?
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Solution {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int i = 1;
while(true) {
if(scanner.equals(null))
break;
else {
String line = scanner.nextLine();
System.out.println(i + " " + line);
i++;
}
}
}
}
答案
scanner.equals(null)
将始终返回false。它检查对象实例是否为空,否则为空。相比之下,scanner.next()
检查扫描程序是否可以找到令牌。
无论如何,您正在使用nextLine
方法,因此您应该使用hasNextLine
,而不是hasNext
:
while(scanner.hasNextLine()) {
String line = scanner.nextLine();
System.out.println(i + " " + line);
i++;
}
以上是关于java equals用法的主要内容,如果未能解决你的问题,请参考以下文章