== 和equal
首先他俩本质上的区别就是==是标识符 ,equal是方法名儿
1、== 运算符!
(1)可以用到基本数据类型和引用数据类型
(2)不一定需要两个数据类型相同 除了不儿性boolean
(3)不同类型比较时 从内存解析上分析 看他堆内存中存储的是什么 是否是相等的
(4)如果比较的是引用数据类型变量 则比较该两个变量的地址值是否相等 比地址值
两个栈是否指向同一个对象实体 或者是堆内存。
2、equal 方法!
1、谁来比较? 由于他是方法 所以基本数据类型就无法调用了
只针对的引用数据类型 咱们创建的这些类 就是引用数据类型
2、如何比较? 在没有重写的情况下 跟==的用法是一样的 比较地址
但是string date file 包装类 等 都重写了equal方法
重写之后 比较的恰好都是比较两个引用或者对象的实体内容的比较
3、但是 通常我们调用方法都是想要比较两个对象的实体内容
所以需要重写对象的equal 的方法
先判断是否为同一个地址
则直接相同
判断是否为子类类型
强制转换成子类类型
(向下传递)
在重写过程中 注意比较的属性也属于引用数据类型 依然需要调用equal
这里我想提一下 toString
因为toSting和equal有很大的相似性,他俩本身都是父类先定义好的方法,但是在用的过程中都需要程序员自己去重写父类方法进行调用才能实现自己想要的效果。
当然这两个方法都都可以通过编译器进行自动生成。=-=,不过还是理解了的好,明白为什么需要重写,或者在没有重写的时候,为什么可以调用。
toString
1、是Object 的一个方法,说明 只要是随便一个类 只要没重写 都可以调用这个方法
2、可以输出地址
3、string date file 包装类 等 都重写了toString方法
他们输出的都是自己想要输出的内容实体
对象.toString相当于直接这个对象名
4、自定义类
需要重写toString方法
可以自动生成 和equal同理一
以上为小编学习笔记使用 如有问题尽情指正!