《thinking in java》笔记3-equals()和==
2018-01-14 01:05
405 查看
==比较两个对象是否是同一个引用。
equals()比较的是两个对象的值是否相同。
运行结果:
相信大家对这个比较迷惑,其实是因为以第二种方式创建的变量引用的是在JVM常量池中已经创建的-128~127共255个整型常量的地址。
这是因为equals默认的是比较对象的 引用!
这个是Object类下的equals();所以对于大多数的java library class会实现equals()方法使该方法比较的是对象的值而不是对象的引用。
equals()比较的是两个对象的值是否相同。
Integer的
package test; public class EqualsTest { public static void main(String[] args) { Integer a = new Integer(10); Integer b = new Integer(10); Integer c = 10; Integer d = 10; System.out.println("==:"+(a==b)); System.out.println("equals:"+a.equals(b)); System.out.println("==:"+(c==d)); System.out.println("equals:"+c.equals(d)); } }
运行结果:
==:false equals:true ==:true equals:true
相信大家对这个比较迷惑,其实是因为以第二种方式创建的变量引用的是在JVM常量池中已经创建的-128~127共255个整型常量的地址。
新建一个class的情况
package test; public class EqualsTest { public static void main(String[] args) { Value a = new Value(); Value b = new Value(); a.i = 100; b.i = 100; System.out.println(a==b); System.out.println(a.equals(b)); } } class Value{ int i; }
这是因为equals默认的是比较对象的 引用!
public boolean equals(Object obj) { return (this == obj); }
这个是Object类下的equals();所以对于大多数的java library class会实现equals()方法使该方法比较的是对象的值而不是对象的引用。
String类型
这个改天再补充!相关文章推荐
- 4000 《thinking in java》笔记14-异常
- java学习笔记3-thinking in java
- day8:《Thinking in Java》笔记第九章---接口
- 《thinking in java》笔记11- static
- #Thinking in Java阅读笔记# 第十一章 持有对象
- 复习《Thinking in Java》笔记一:第五、第八章笔记
- #Thinking in Java阅读笔记# 第九章 接口
- java学习笔记4-thinking in java
- Thinking in java 个人笔记 第五章(持续更新ing)
- Thinking in java Chapter 1 笔记
- day4 part1:《Thinking in Java》笔记第五章---初始化与清理
- Thinking in java学习笔记之持有对象总结
- 《thinking in java》笔记10-final + blank final +final修饰形参
- 《thinking in java》学习笔记10
- 《thinking in java》笔记2-Random()和seed
- 《thinking in java》笔记5-重写,覆盖,重载
- 《Thinking In Java》笔记(3)
- #Thinking in Java阅读笔记# 第三章 操作符
- day16:《Thinking in Java》笔记第十三章---字符串
- 《thinking in java》笔记13-内部类