主要是比较了基本类型和应用数据类型的使用区别!
package Java.jichu;
/**
* Created by wkb on 2018/8/27.
* Integer 有缓冲区:-128 到127,如果有直接返回前一个对象,否则重写new Integer();
* Integer 重写了equals
* == :基本数据类型 比较的是值,引用数据类型:先比较地址值,再比较值
* equals : 基本数据类型 比较的是值,引用数据类型:先比较地址值,再比较值,如果重写equals则比较值
*/
public class Wkb1 {
public static void main(String[] args) {
Integer c = 127;
Integer d = 127;
System.out.println(c == d);//true Integer 有缓冲区:-128 到127,如果有直接返回前一个对象,否则重写new Integer();
System.out.println(c.equals(d));//true
System.out.println("---------------");
Integer c1= 128;
Integer d1= 128;
System.out.println(c1==d1); //false
System.out.println(c1.equals(d1)); //true //Integer 重写了equals
System.out.println("---------------");
int a1 = 12;
int b1 = 12;
//true 基本数据类型 == 比较的是值,引用数据类型:先比较地址值,再比较值,如果重写equals则比较值
System.out.println(a1 ==b1 );
System.out.println("---------------");
Student a = new Student("小王",12);
Student b = new Student("小王",12);
System.out.println(b==a); //false
System.out.println(b.equals(a));//不重写equals方法 false; 重写equals true
}
public static class Student {
String name;
int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
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;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
if (age != student.age) return false;
return name != null ? name.equals(student.name) : student.name == null;
}
@Override
public int hashCode() {
int result = name != null ? name.hashCode() : 0;
result = 31 * result + age;
return result;
}
}
}