//基本数据类型的比较
int num1 = 10;
int num2 = 10;
System.out.println(num1 == num2); //true
//引用数据类型的比较
String s1 = "chance";
String s2 = "chance";
System.out.println(s1 == s2); //true
System.out.println(s1.equals(s2)); //true
//String类中==与equals的比较
String s3 = new String("chance");
String s4 = new String("chance");
System.out.println(s3 == s4); //false
System.out.println(s3.equals(s4)); //true
//没有重写类中的==与equals类型的比较 就是没有在父类中重写equals方法的类
People dashun1 = new People();
People dashun2 = new People();
System.out.println(dashun1.equals(dashun2)); //false
People dashun = dashun2;
System.out.println(dashun.equals(dashun2)); //true
根据以上的结果,分析如下
基本数据类型
1、“==”:比较的是两个基本数据类型的值是否相等,equals不能使用基本数据类型
int num1 = 10;
int num2 = 10;
System.out.println(num1 == num2); //true
//只是单纯的比较两个值,10=10 即使数据类型不一样,也没有关系
int num1 = 10;
float num2 = 10;
system.out.println(num1 == num2); //true
引用数据类型
String类中两种比较
第一种
String num1 = "dashun";
String num2 = "dashun";
System.out.println(num1 == num2); //true
System.out.println(num1.equals(num2)); //true
“==” 在引用数据类型中,比较引用对象是否相等,就是这两个是否都是引用同一个对象
“equals” 在string类中,因为被继承重写过,用来比较两个字符串实际内容是否相等,就是每一个字符串是否相等。
String的equals的重写:比较其中每一个字节
第二种
String num1 = new String("dashun");
String num2 = new String("dashun");
//每一次new都会创建一个内存空间
System.out.println(num1 == num2); //false
System.out.println(num1.equals(num2)); //true
在new一个类的时候会自动创建一个对象存放在堆中
“==”还是比较的引用地址,而equals比较的字符串实际内容是否相等
自己建一个类 比较 重写和不重写equals比较
不重写equals
public class People {
public String name;
public int age;
public int height;
public String brilliant; //英俊
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public String getBrilliant() {
return brilliant;
}
public void setBrilliant(String brilliant) {
this.brilliant = brilliant;
}
}
People dashun1 = new People(); //new第一个对象
dashun1.setName("dashun");
dashun1.setAge(21);
dashun1.setHeight(179);
dashun1.setBrilliant("帅"); //两个对象设一样值
People dashun2 = new People(); //new第二个对象
dashun1.setName("dashun");
dashun1.setAge(21);
dashun1.setHeight(179);
dashun1.setBrilliant("帅"); //两个对象设一样值
System.out.println(dashun1 == dashun2); //false
System.out.println(dashun1.equals(dashun2)); //false
重写equals
@Override
public boolean equals(Object obj) { //在people类中重写
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
People other = (People) obj;
if (age != other.age)
return false;
if (brilliant == null) {
if (other.brilliant != null)
return false;
} else if (!brilliant.equals(other.brilliant))
return false;
if (height != other.height)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
然后在运行后
People dashun1 = new People();
dashun1.setName("dashun");
dashun1.setAge(21);
dashun1.setHeight(179);
dashun1.setBrilliant("帅");
People dashun2 = new People();
dashun2.setName("dashun");
dashun2.setAge(21);
dashun2.setHeight(179);
dashun2.setBrilliant("帅");
System.out.println(dashun1 == dashun2); //false
System.out.println(dashun1.equals(dashun2)); //true
赋值一下让“==”成立
People dashun = dashun2; //在原先的基础上赋值一波
System.out.println(dashun == dashun2); //true
System.out.println(dashun.equals(dashun2)); //true
微信公众号"想要逆袭的小白" 或搜索:DashunSuccess
时不时有高质量文章更新