今日分享:
==、equals、equalsIgnoreCase的用法和区别。
三者都是用来比较两个值是否相等
1.“ ==”用法
==:是用来比较两个变量代表的地址是否相等的运算符,结果返回一个boolean值,如果相同就是ture,不同为flase。
例如:
public class demo{ //创建一个基本类型 int a1=10; int a2=10; System.out.println(a1==a2); }
运行结果:
ture
上例可以看出:两个基本类型相比较,他们的返回结果为ture,在运算过程中,创建的10放入了内存中的常量区域,由于a1和a2的值相同,他们共同指向了10这个常量区同一个地址,因此结果为ture.
同时,“==”可以用来作基本类型和类类型的比较。
例2.
public class demo2{ int a1=10; Integer a2=10; Integer a3=new Integer(10); System.out.println(a1==a2); System.out.println(a1==a3); }
运行结果:
ture ture
由结果可以看出,返回的值均为ture,在类类型中封装了一个基本类型,当基本类型与类类型进行比较时,会自动的将封装的基本类型数据取出进行计算。
例3.引用例2
System.out.println(a2==a3); } 运行结果:
flase
由结果可以看出,两个类类型进行计算时,反应出的地址并不相同,这是因为,两个类类型进行计算时,是不会进行自动拆箱的。
2. equals用法
equals是Object中定义的方法,用来比较两个值是否“相等”,在这里的“相等“是可以根据各自的需求自己定义的,各个类可以重写equals方法。
例4.String类中定义的equals方法与我们自己定义的一个Integer类中equals方法的比较
public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String anotherString = (String)anObject; int n = count; if (n == anotherString.count) { char v1[] = value; char v2[] = anotherString.value; int i = offset; int j = anotherString.offset; while (n-- != 0) { if (v1[i++] != v2[j++]) return false; } return true; } } return false; }
重写后的Integer
public class MyInteger { int value; public MyInteger(int value) { this.value = value; } public boolean equals(Object obj) { if (obj instanceof MyInteger) { MyInteger my = (MyInteger) obj; return this.value == my.value; } return false; }
从上述代码可以看出,String类与Integer类所比较的内容不同,因此在重写后所比较的侧重点不同,但他们有所相同之处是在比较之时,首先满足必须是同类型,不是同类型返回一定是flase,如果是同类型,String类中,需要挨个比较各个字符是否相同,如果每个字符比较后都相同,则返回ture。而Integer类中,如果是同类型比较,则进一步需要比较两个值,如果值相同,则返回ture.
3.equalsIgnoreCase用法
equalsIgnoreCase方法是String类中定义的方法,只能用来比较字符串,用来比较字符串对应的字符是否相同,与String类中的equals方法类似,但是equalsIgnoreCase方法比较字符串时,忽略大小写。常见用在:检验验证码(不区分大小写),计算机中的全盘搜索(不区分大小写)。
例5.String类中定义的equalsIgnoreCase方法:
public boolean equalsIgnoreCase(String anotherString) { return (this == anotherString) ? true : (anotherString != null) && (anotherString.count == count) &®ionMatches(true, 0, anotherString, 0, count); }
以上是”==”、equals、equalsIgnoreCase用法及区别。