云计算百科
云计算领域专业知识百科平台

String字符串进行==和equals()比较时的差异

(1) 字符串有多种创建方式

String str="天干地支";

String str=new String(new byte[]{-52, -20, -72, -55, -75, -40, -42, -89}, "GBK");(GBK为编码方式)

String str=new String(new char[]{"天""干""地""支"");

String str=new String("天干地支");

(2) ==和equals()的差异

String类型属于引用类型,在引用类型使用==时比较的是内存地址。

equals()的默认方法还是==,但通过子类的重写可实现比较内容。

在String使用equals()时比较的是内容。

(3)String重写equals()方法源代码解读

public boolean equals(Object anObject) {
//如果地址相同就不需要比较自然相等
if (this == anObject) {
return true;
}
//判断是否属于String(字符串类型)
if (anObject instanceof String) {
//如果是则进行向下转型Object–>String
String anotherString = (String)anObject;
int n = value.length;
//比较调用字符串和目标字符串的长度
if (n == anotherString.value.length) {
//用字符数组来储存调用字符串和目标字符串
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
//如果字符串长度不为零则进入while循环
while (n– != 0) {
//比较每个字符,如果不相等输出false
if (v1[i] != v2[i])
return false;
i++;
}
//如果从头到尾没有不相等的则输出true
return true;
}
}
//上方判断有一个没通过就输出false
return false;
}

赞(0)
未经允许不得转载:网硕互联帮助中心 » String字符串进行==和equals()比较时的差异
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!