对java里equals的一些理解!
来源:互联网 发布:js去除重复键值对 编辑:程序博客网 时间:2024/05/16 14:02
此文适合java入门者阅读,希望高手指点迷津,偶才学几天,可能写的错误百出,好多概念的理解也不是很准确.不要bs偶啊,有错误希望指出,谢谢.
<<java编程思想>>里有这样一个程序(稍微做了些修改)
public class EqualsMethod { //A程序
int i;
public static void main(String[] args) {
EqualsMethod v1=new EqualsMethod();
EqualsMethod v2=new EqualsMethod();
v1.i=v2.i=100;
System.out.println(v1.equals(v2));
}
}
第一次看到这里的时候,我第一眼觉得结果为true,运行的结果其实是false,书上说equals默认行为是比较reference,所以除非在新类里overide equals(),否则得不到想要的结果.当时没有弄多大明白,就跳过去了.想想,有空再思考它.后来,在baidu知道里,碰到有人问这个问题,想 给别人回答,却发觉自己原来也不是理解的很透彻.所以就狠下心来,好好研究下,查了不少资料,终于有些头绪.
首先说说关于equals()的一些理解,,equals是面向对象的操作符,是任何类的一个方法,都可以调用它,;语法格式为 Reference1.equals(Reference2 ) , 如果要比较两个对象是否一致,就可以使用equals.
运行上面的程序,结果为false,equals比较了v1,v2这两个reference,如果是新手,譬如我自己吧,会纳闷,程序中对v1,v2进行了赋了相等的值,,那就应该是相等的,结果应该是true才对.事实却不是这样的.那我们改动下程序,看下另外的运行结果:
public class EqualsMethod1 { //B程序
/**
* @param args
*/
public static void main(String[] args) {
EqualsMethod1 v1=new EqualsMethod1();
EqualsMethod1 v2=new EqualsMethod1();
System.out.println(v1.equals(v2));
}
}
结果还是false,这样可以说明定义"i"和赋值,对于比较结果没有什么影响的.对上面的程序再稍做修改:
public class EqualsMethod { //C程序
public static void main(String[] args) {
EqualsMethod v1=new EqualsMethod();
EqualsMethod v2=new EqualsMethod();
v1=v2;
System.out.println(v1.equals(v2));
}
}
输出结果为true.v1=v2?该怎样理解呢?赋值?还是其他???先放到一边....查了一些资料,得出了equals做比较时,是调用的句柄做比较.(其实我也不知道句柄是个什么概念,)" 在windows中,句柄是和对象一一对应的32位无符号整数值。对象可以映射到唯一的句柄,句柄也可以映射到唯一的对象。""这个是在windwos中的定义,不知道拿到这里来是否适用.暂且认为一样吧.所以在程序b里,两个对象,v1,v2在new的时候,都各自被分配了句柄,,句柄是唯一的,.所以程序b的执行结果为false.
在程序c,出现了v1=v2;结果就true了,又是为什么呢?原来v1=v2,不是把v2的值赋给v1,而是把v2句柄copy给v1,所以v1,v2指向的就是同一个对象.结果自然就true了.
还想写,不过觉得好多都理解错了,可能上面写的都是错的,思绪清楚了,再写吧!哎!失败!
- 对java里equals的一些理解!
- 对java中equals和hashCode函数的一些理解
- 对java中equals和hashCode函数的一些理解
- 对java中equals和hashCode函数的一些理解
- 对java中equals和hashCode函数的一些理解
- java基础:equals() 和 hashCode()的一些理解
- 对Java关键字synchronized的一些理解
- 对java中static的一些理解
- 对java反射机制的一些理解
- 对java数组的一些理解
- 初学java对一些基本概念的理解
- 对于hashCode和equals的一些理解
- 我对类equals,hashcode的理解
- 对equals和hashcode值的理解
- 对hashCode 和 equals的理解
- java 里的equals()和hashcode()
- java里equals和hashCode的关系
- 说说Java里的equals(上)
- p2p架构的邮件系统
- 网络选摘之邮件转发
- 朝花夕拾之六 重庆旅途
- 网络选摘之[javamail在线发邮件全部代码,包括身份验证部分]
- 网络选摘之[java mail发邮件的时候如何带附件]
- 对java里equals的一些理解!
- 五句话改变人生
- PE Tools v1.5, Build 400, Christmas Edition by NEOx
- Edsger Dijkstra经典言论 (ZT)
- 一个测试运行时间的函数
- 夜深了,我们的明天
- 推箱子
- Windows2000服务器管理全攻略
- Windows Internet服务器安全配置