本帖最后由 编程学徙 于 2014-5-24 04:16 编辑
关于在字符串比较中equals方法和“==”运算符的不同之处。
首先,假定有字符串a和b.
a==b 这个boolean表达式,只要a和b 当中字符串内容相同,则值为true,否则,值为false;
a.equals(b) 这个boolean表达式,只有当a和b引用的是同一片内存时(同一片内存,字符串当然相同),其值才为true,否则,值都为false;
以下是代码验证:
class Str01
{
public static void main(String[] args)
{
String a = "hello";
String b = "hello";
String c = new String("hello");
if(a==b)
{
System.out.printf("a和b引用同一片内存\n");
}
else
{
System.out.printf("a和b不引用同一片内存\n");
}
if(a.equals(b))
{
System.out.printf("a和b字符串相同\n");
}
else
{
System.out.printf("a和b字符串不同\n");
}
if(a==c)
{
System.out.printf("a和c引用同一片内存\n");
}
else
{
System.out.printf("a和c不引用同一片内存\n");
}
if(a.equals(c))
{
System.out.printf("a和c字符串相同\n");
}
else
{
System.out.printf("a和c字符串不同\n");
}
}
}
以下是运行结果:
|
|