1、==运算符的概述及举例(两个)
==运算符:
1、可以使用在基本数据类型变量和引用数据类型变量中
2、如果比较的是基本数据类型变量(如int、float、double),比较两个变量保存的值是否相等。
3、如果比较的是引用数据类型变量(如String,Integer,Double),比较两个对象的地址值是否相等,即两个引用是否指向同一个对象实体,即在堆中的地址。
例子一:基本数据类型以及引用数据类型比较
这是引用数据类型,开辟在堆中,有不同的内存地址
例子二:String的直接赋值
接赋值的内存内容存在常量池之中,在常量池中如果已有一个一样的会进行复用了,这样赋到的地址是一样的,所以这样==得到的为true
2、equals方法使用说明
equals方法:
1.这是一个方法,而不是运算符
2.只适用于引用数据类型
3.所有类的基类Object中的equals的定义
public boolean equals(Object obj){ //这里是object中的方法 return (this==obj); }
在Object中定义的equals()与 == 的作用相同,都是比较两个对象的地址值是否相同,即两个引用是否指向一个实体
4.在String,Date,File,包装类中实际上重写了Object类中的equals方法,这里面比较的是两个对象的实体内容是否相等
问题:这里为什么同样是创建类但是结果不一样呢?
因为这里自定义类继承object中的equals与String里的equals不同,String中的是重写的,自定义类中没有重写。