动手动脑
2015-10-24 11:10
162 查看
public class StringEquals { /** * @param args the command line arguments */ public static void main(String[] args) { String s1=new String("Hello"); String s2=new String("Hello"); System.out.println(s1==s2); System.out.println(s1.equals(s2)); String s3="Hello"; String s4="Hello"; System.out.println(s3==s4); System.out.println(s3.equals(s4)); } }
我们知道所有的对象都拥有标识(内存地址)和状态(数据),同时“==”比较两个对象的的内存地址,所以说使用Object的equals()方法是比较两个对象的内存地址是否相等,即若object1.equals(object2)为true,则表示equals1和equals2实际上是引用同一个对象。虽然有时候Object的equals()方法可以满足我们一些基本的要求,但是我们必须要清楚我们很大部分时间都是进行两个对象的比较,这个时候Object的equals()方法就不可以了,实际上JDK中,String、Math等封装类都对equals()方法进行了重写。
equals 方法在非空对象引用上实现相等关系:
1、自反性:对于任何非空引用值 x,x.equals(x) 都应返回 true。
2、对称性:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应返回 true。
3、传递性:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true,并且 y.equals(z) 返回 true,那么 x.equals(z) 应返回 true。
4、一致性:对于任何非空引用值 x 和 y,多次调用 x.equals(y) 始终返回 true 或始终返回 false,前提是对象上 equals 比较中所用的信息没有被修改。
5、 对于任何非空引用值 x,x.equals(null) 都应返回 false。
相关文章推荐
- Android--调用系统的DownLoadManager去下载文件
- WPF三大模板简介
- 地理编码服务 GeoCode Service
- Android静默安装
- 单循环链表实现
- leetcode Unique Paths II
- windows下 Codeblocks 搭建 Objective-c 开发环境
- Android Studio使用说明
- HDU 5468 Puzzled Elena
- Spring AOP的底层实现技术
- jquery 通知提示框教程
- Framework目录一阅
- iOS常见问题---const和volatile
- Java-ServletRequestListener-ServletRequestAttributeListener
- Java-ServletRequestListener-ServletRequestAttributeListener
- 协同过滤工具推荐
- Android Universal Image Loader 使用详解
- MySQL [Warning]: IP address 'xxxx' could not be resolved: Name or service not known
- Combinations
- 【FastDev4Android框架开发】Android 列表下拉刷新组件PullToRefreshListView使用(三)