package day08;
public class Test1 {
public static void main(String[] args) {
int i=3;
System.out.println(i==4);
//引用类型比较引用,只有指向同一对象时,才会返回ture
Person1 p1=new Person1();
Person1 p2=new Person1();
System.out.println(p1==p2);
Person1 p3=new Person1();
Person1 p4=p3;
System.out.println(p3==p4);
// Test1 t1=new Test1();
// System.out.println(p1==t1);//会出错,不是同一类型的
System.out.println("--------------");
System.out.println(p1.equals(p2));//只能比较引用类型,其作用和= =相同
String s1=new String("abc");
String s2=new String("abc");
System.out.println(s1==s2);
System.out.println(s1.equals(s2));
System.out.println("--------------");
String s3="abc";
String s4="abc";
System.out.println(s3==s4);
}
}
运行截图
小结:
==是比较的是内存地址
equals,对于特殊的,例如String来说,比较的是值,对于其他的来说,比较的也是内存地址
练习:
Order
package day08;
public class Order {
public Order(int OrderId,String OrderName){
this.OrderId=OrderId;
this.OderName=OrderName;
}
int OrderId;
String OderName;
public int getOrderId() {
return OrderId;
}
public void setOrderId(int orderId) {
OrderId = orderId;
}
public String getOderName() {
return OderName;
}
public void setOderName(String oderName) {
OderName = oderName;
}
public boolean equals(Object obj){
boolean flag=false;
if (obj instanceof Order){
Order o = (Order) obj;
if (this.OrderId==o.OrderId && this.OderName.equals(o.OderName)){
flag=true;
}
}
return flag;
}
}
TestOrder
package day08;
public class TestOrder {
public static void main(String[] args) {
Order o1=new Order(123,"a001");
Order o2=new Order(123,"a001");
System.out.println(o1.equals(o2));
}
}
运行截图
MyDate
package day08;
public class MyDate {
public MyDate(int year,int month,int day){
this.year=year;
this.month=month;
this.day=day;
}
int year;
int month;
int day;
@Override
public boolean equals(Object obj) {
int flag=1;
if (obj instanceof MyDate){
MyDate my= (MyDate) obj;
flag=0;
if (this.year!=my.year){
flag+=1;
}
if (this.month!=my.month){
flag+=1;
}
if (this.day!=day){
flag+=1;
}
}
if (flag==0){
return true;
}else {
return false;
}
}
}
TestMyDate
package day08;
public class TestMyDate {
public static void main(String[] args) {
MyDate m1=new MyDate(2016,12,15);
MyDate m2=new MyDate(2016,12,15);
System.out.println(m1.equals(m2));
}
}
运行截图