java的equals、hashcode和Clone方法
来源:互联网 发布:银行大数据分析现状 编辑:程序博客网 时间:2024/04/30 07:01
(1)关键技术剖析:(Object类的这三个方法)
v
v
v
class
int
public
super();
this.a
}
public
T
T
System.out.println("equals:"+a.equals(a1));
System.out.println(a==a1);
System.out.println("两个对象的hashCode:"+a.hashCode()+"***"+a1.hashCode());
System.out.println("两个对象的toString:"+a.toString()+"***"+a1.toString());
}
}
程序输出:
equals:false
false
两个对象的hashCode:1641745***11077203
两个对象的toString:T@190d11***T@a90653
²
²
之所以出现上述这些情况,是因为Object类的这些方法都是基于对象的地址实现的,对象a和b的值虽然一样,都是它们的地址不一样,就出现了上述这些情况。
因此,为了更好地设计一个类,开发人员最好自己定义equals()、hashcode()和clone方法,以方便人们更好的使用这个类。需要对T类进行改进,重写以上三个方法。
class
int
public
return
}
public
this.a
}
public
super();
this.a
}
@Override
//
protected
//克隆新对象时,应该先调用父类的克隆方法
T
newObject.setA(this.a);
return
}
@Override
public
final
int
result
return
}
@Override
public
if
return
if
return
if
return
T
if
return
return
}
@Override
public
return
}
public
T
T
System.out.println("equals:"+a.equals(a1));
System.out.println(a==a1);
System.out.println("两个对象的hashCode:"+a.hashCode()+"***"+a1.hashCode());
System.out.println("两个对象的toString:"+a.toString()+"***"+a1.toString());
try
System.out.println("clone:"+a.clone().toString()+"***"+a1.clone());
}
//
e.printStackTrace();
}
}
}
程序输出:(T类添加了equals()、clone()和hashCode())
false
两个对象的hashCode:32***32
两个对象的toString:T[a=1]***T[a=1]
clone:T[a=1]***T[a=1]
(2)源码分析:
²
²
²
- java的equals、hashcode和Clone方法
- equals、hashCode和clone方法
- equals、hashCode和clone方法
- equals、hashCode和clone方法
- equals、hashCode和clone方法
- java的hashCode方法和equals方法
- java的hashCode方法和equals方法
- 关于java的equals和hashcode方法
- java equals()和hashcode()方法的理解
- java的equals()和hashcode()方法使用
- [Java]hashCode和equals方法的比较
- 关于java的equals和hashcode方法
- Java equals 和 hashcode 方法
- java hashCode 和 equals 方法
- Java hashCode 和 equals 方法
- Object类的这三个方法---equals、hashCode和clone方法关键技术剖析
- equals, hashCode, clone的tips
- JAVA源码分析之---Object类(二)---hashCode,equals,clone方法的使用
- Linux下安装PHP
- ajax提交Form
- Android阴影布局开源框架
- 新浪微博-首页的普通文本转换富文本
- 靠谱的爱代驾司机
- java的equals、hashcode和Clone方法
- 网易新闻
- [MySQL FAQ]系列 — 从MyISAM转到InnoDB需要注意什
- Servlet、Request、Response、filter、listener
- android异常
- Lambda表达式详解
- XJOI 迷你火车头
- android ContentProvider
- Dubbo入门例子HelloWorld