==和equals的区别
来源:互联网 发布:node buffer 编辑:程序博客网 时间:2024/06/05 14:36
一。理解==和equal的区别
1.==是判断两个变量或实例是不是指向同一个内存空间,equals是判断两个变量或实例所指向的内存空间的值是不是相同
2.==是指对内存地址进行比较,equals()是对字符串的内容进行比较
3.==指引用是否相同 ,equals()指的是值是否相同
2.==是指对内存地址进行比较,equals()是对字符串的内容进行比较
3.==指引用是否相同 ,equals()指的是值是否相同
二。Object与String
1)java的Object类中
public boolean equals(Object obj) { return (this == obj); }
2) java的String类中
public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String anotherString = (String)anObject; int n = value.length; if (n == anotherString.value.length) { char v1[] = value; char v2[] = anotherString.value; int i = 0; while (n-- != 0) { if (v1[i] != v2[i]) return false; i++; } return true; } } return false; }
如果一个类没有自己定义equals方法,它默认的equals方法(从Object类继承的)就是使用==操作符,也是在比较两个变量指向的对象是否是同一对象,这时候使用equals和使用==会得到同样的结果
附录:
1)Integer与int的拆箱与装箱
首先看下源代码:
public static Integer valueOf(int i) { if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); }在装箱时,将-128<=i1<=127范围之内的数据打包成缓存里的Integer对象了,由于不用new,所以这个区间里的值用直接=赋值方法得到的变量地址就是同一个,而超出这个范围的数值就会new一个Integer对象出来,用==运行符来计算,怎么也不可能为true。
Integer a=1;Integer b=1;Integer c=150;Integer d=150;System.out.println(a==b);//trueSystem.out.println(c==d);//false
阅读全文
0 0
- “=”和“equals()”的区别
- java ==和equals、equals和hashCode的区别
- 关于“==”和“equals”的区别
- 关于Equals 和== 的区别
- equals和==的区别
- equals 和 == 的区别
- equals 和 == 的区别
- ==和Equals的区别
- equals 和 == 的区别
- equals 和 == 的区别
- equals和==的区别
- equals 和 == 的区别
- equals和==的区别
- 关于==和equals的区别
- Equals和“==”的区别
- == 和equals() 的区别
- equals("")和“==”的区别
- equals 和 == 的区别
- C语言——求[a,b]内的所有回文数
- [Lintcode] #167 链表求和
- 【Python-3.5】Pygal模拟骰子点数,分析结果可视化
- JsonCpp如何判断是否有某个KEY
- 系统日至及时间同步
- ==和equals的区别
- Java-Json的格式化和转参数表格
- 学习maven的使用,看到一篇很实用的入门教程(菜鸟级入门)
- C语言字符串操作总结大全(超详细)
- CentOS搭建ShowDoc文档工具
- 程序设计入门——Java入门作业(第三周)
- 堆内存的分配和释放
- leetcode-Two Sum
- jsp+servlet