今日分享:
==、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用法及区别。