== 和 equal的区别
2015-07-31 10:13
357 查看
==比较的是数据存储的内存地址
基本类型只能用==,不能使用equal进行比较
对于复杂类型,如果是对象类型,==和equal的使用没有区别,比较的是 数据存储的内存地址,即变量是否指向同一个引用对象。
对于String ,Integer,Float等对象而言,因为它们都重写了equal()方法,所以改变了从Object类继承的equal()方法,
重写后的equal()方法比较的是对象的值,
重写后的代码:
基本类型只能用==,不能使用equal进行比较
对于复杂类型,如果是对象类型,==和equal的使用没有区别,比较的是 数据存储的内存地址,即变量是否指向同一个引用对象。
对于String ,Integer,Float等对象而言,因为它们都重写了equal()方法,所以改变了从Object类继承的equal()方法,
重写后的equal()方法比较的是对象的值,
重写后的代码:
public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String anotherString = (String)anObject; int n = count; if (n == anotherString.count) { char v1[] = value; char v2[] = anotherString.value; int i = offset; int j = anotherString.offset; while (n-- != 0) { if (v1[i++] != v2[j++]) return false; } return true; } } return false; } public int hashCode() { int h = hash; if (h == 0) { int off = offset; char val[] = value; int len = count; for (int i = 0; i < len; i++) { h = 31*h + val[off++]; } hash = h; } return h; }
相关文章推荐
- 【暑期基础】R HDU 2017 字符串统计
- XMUT ACdream DP专场E题 - 喵哈哈的日常选数问题(数位DP)
- nyoj-2括号匹配
- 为什么后面加了个eq(0).mouseover(),该怎么解决
- IP地址的规划和设计方法(一)
- 基本固件框架的追踪研读之SETUP命令的处理2
- outline详解
- 最近值得珍惜的小事
- Xshell License Key
- FreeMarker初级攻略
- 读书笔记22:职责链模式
- C# 注册COM+组件步骤~
- 算法题:链表的递归逆序
- 【暑期基础】Q HDU 2016 数据的交换输出
- VS2012+OpenGL (涵盖GLUT+GLEW+FreeGlut+GLTools) h lib 和dll文件
- iBATIS、MyBatis缓存设置
- Android 命名规范 (提高代码可以读性)
- android实现缓存图片等数据
- Windows 10步骤记录是什么?Win10录制操作步骤的教程
- 浅析依赖注入框架Autofac的使用