虽然明白有差异,但却说不出所以然,谁可以解释一下?下面是测试,运行后就知道结果。
重点在第一,二的if语句。。
public class EqualsDemo { public static void main(String[] args) {
String var1 = new String("var1");
String var2 = new String("var");
var2 = new String(var2 + "1");
System.out.println(var2);
if (var1==var2)
System.out.println(" using == operator return same Object.");
else
System.out.println(" using == operator return different Object.");
if (var1.equals(var2))
System.out.println(" using equals method return same Object.");
else
System.out.println(" using equals method return different Object.");
var1=var2;
System.out.println("After assigning var1=var2");
if (var1 == var2)
System.out.println(" using == operator return same Object.");
else
System.out.println(" using == operator return different Object.");
if (var1.equals(var2))
System.out.println(" using equals method return same Object.");
else
System.out.println(" using equals method return different Object.");
}
}
重点在第一,二的if语句。。
public class EqualsDemo { public static void main(String[] args) {
String var1 = new String("var1");
String var2 = new String("var");
var2 = new String(var2 + "1");
System.out.println(var2);
if (var1==var2)
System.out.println(" using == operator return same Object.");
else
System.out.println(" using == operator return different Object.");
if (var1.equals(var2))
System.out.println(" using equals method return same Object.");
else
System.out.println(" using equals method return different Object.");
var1=var2;
System.out.println("After assigning var1=var2");
if (var1 == var2)
System.out.println(" using == operator return same Object.");
else
System.out.println(" using == operator return different Object.");
if (var1.equals(var2))
System.out.println(" using equals method return same Object.");
else
System.out.println(" using equals method return different Object.");
}
}
==是两对象之间的比较
例如 String s1 = new String("string");
String s2 = new String("string");
s1 和s2值相同,用equals比较的话,返回true,用==比较的话返回false
==比较是否同一个引用String s1 = "123";
String s2 = "123";
String s3 = new String("123");s1==s2 ;// true ;
s1==s3 ;// false
s1.equals(s3) ;// true
equals()用来比较对象里边的内容或是值是否相等!比如字符串比较就是比较两个字符串的值是否相等了!自定义类需要重写equals()方法来实现比较!比如下面这个类:
public class Person{
private String name;
private int age;
public Person(String name,int age){
this.name=name;
this.age=age;
}
public void setName(String name){
this.name=name;
}
public String getName(){
return this.name;
}
public void setAge(int age){
this.age=age;
}
public int getAge(){
return this.age;
} //重写equals方法
public boolean equals(Person person){
boolean result=false;
if(this.name.equals(person.getName()) && this.age==person.getAge();){
result=true;
}
return result;
}
}
//测试类
public class Test{
public static void main(String args[]){
Person person1=new Person("zhangsan",23);
Person person2=new Person("zhangsan",23);
boolean result;
result=person1.equals(person2);
System.out.println(result);
if(result){
System.out.println("person1==person2");
}
else{
System.out.println("person1!=person2");
}
}
}
==是两对象之间的比较这个说的很对
==比较是否同一个引用String s1 = "123";
String s2 = "123";
String s3 = new String("123");s1==s2 ;// true ;
s1==s3 ;// false
s1.equals(s3) ;// true
equals是比较对象是否相同也就是比较的是两个String的值是否相同,与其地址无关
ladofwind(随风)
解释的非常明白了
{
public String name;
public int age;public testperson(String name,int age)
{
this.name=name;
this.age=age;
System.out.println("done!");
}
public static void main(String [] args)
{
testperson p1=new testperson("aaa",20);
testperson p2=new testperson("aaa",20);if(p1.equals(p2))
System.out.println("object equals ok!");if(p1== p2)
System.out.println("object == ok!");String a=new String ("eee");
String b=new String ("eee");if(a.equals(b))
System.out.println("string equals ok!");if(a==(b))
System.out.println("string == ok!");}}请高手看下这个代码...