先说“==”
“” 是一个常用运算符,在比较中经常用到,
- 基本数据类型的用“==”进行比较的时候,看的值是不是相同;忽略数据类型,只看数值,布尔类型的不能和其他基本数据类型进行比较。
- 引用数据类型使用 “==”是比较的内存中的地址值是否一致
基本数据类型的比较:
写出所有的基本数据类型,进行比较,即可。在基本数据类型使用 == “”时候,只是比较了数值是否一样,忽略了类型的不同。 其中要注意char类型的特殊情况,比如:
char a ='A';
int b=65;
System.out.println(a==b);
这个结果其实是 true;因为char类型的A在内存中的ascii码 就是65 ,所以能返回 true;
引用数据类型的比较:
String是一个类,自然就是引用数据类型,但是String可以直接赋值,产生一个对象。当值是一样的时候,返回 true,
String a = "zhangguan";
String b ="zhangguan";
System.out.println(a==b);// true
System.out.println(a.equals(b));//true
String 中 使用 equals() 时候,其实走的方法是String 类自己的重写。
原本equals()方法是Object 类中的方法,String类进行重写之后,在调用equals()时,走的是自己重写的方法,源码如下:
自定义引用数据类型的比较:★★★★★★
声明了一个People类,然后实例化两个对象,使用==进行比较 返回false,因为两个对象在 堆空间中的 地址不一样,所以返回fase;
People p1 = new People();
People p2 = new People();
System.out.println(p1 == p2); //false
关于equals方法:
对于对象的比较,如果你没有对object类中的 equals方法进行重写,那么自然就走 object类中的equals方法,我声明的People类中,并没有对该方法进行重写,所以走父类object中的方法。返回false,比较父类object中的equals方法 比较的也是地址值是否一直:
People p1 = new People();
People p2 = new People();
System.out.println(p1.equals(p2));//false
java源码:
如果你重写了equals的方法,就能自己去定义两个对象是否一直了。