关于 "==" 、equals 与 Textutils.equals 的使用方法探究

365beat网页怎么打不开 2025-08-07 21:44:51 admin

1、"=="和equals方法究竟有什么区别?

==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同

要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。

equals方法是用于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的。

例如:

String a=new String("A");

String b=new String("A");

两条new语句创建了两个对象,然后用a/b这两个变量分别指向了其中一个对象,这是两个不同的对象,它们的首地址是不同的,即a和b中存储的数值是不相同的,所以,表达式a==b将返回false,而这两个对象中的内容是相同的,所以,表达式a.equals(b)将返回true。

在实际开发中,我们经常要比较传递进行来的字符串内容是否等,

例如:

String falg = "falg";

falg.equals(“quit”),

许多人稍不注意就使用==进行比较了,这是错误的,记住,字符串的比较基本上都是使用equals方法。

在日常开发过程中,通常我们在使用equals的时候也要注意。先看系统源码。

public boolean equals(Object anObject) {

if (this == anObject) {

return true;

}

if (anObject instanceof String) {

String anotherString = (String)anObject;

int n = length();

if (n == anotherString.length()) {

int i = 0;

while (n-- != 0) {

if (charAt(i) != anotherString.charAt(i))

return false;

i++;

}

return true;

}

}

return false;

}

如果equals之前的参数为NULL,会出现空指针异常

例如:

String key = null;

key.equals(falg);

这是错误的。

解决方式:一是将其进行翻转

falg.equals(key);

解决方式:二使用Textutils.equals() (推荐方式)

Textutils.equals(key,falg)

源码如下

public static boolean equals(CharSequence a, CharSequence b) {

if (a == b) return true;

int length;

if (a != null && b != null && (length = a.length()) == b.length()) {

if (a instanceof String && b instanceof String) {

return a.equals(b);

} else {

for (int i = 0; i < length; i++) {

if (a.charAt(i) != b.charAt(i)) return false;

}

return true;

}

}

return false;

}

相关文章

EXCEL转CSV

为打印机或任何网络设备分配静态 IP 地址

苍蝇经常呆在屎上为什么不生病? | 趣问万物