java中Object类测试总结
2017-12-13 22:25
246 查看
public class ObjectStu {
/*Object类:java里所有类的父类,顶层的类
*equals:判断两个对象是否"相等";
*hashcode:返回一个对象的哈希码值,是一个整数
*因为之后的容器,例如hashset和hashMap会对元素进行去重的处理;所以equals和hashcode需要同时重写;
*重写之后需要满足的标准:
*当equals的结果为true的时候,要求两个对象的hashcode值相等;
*当equals的结果为false的时候,要求两个对象的hashcode值不等;(hashcode可以相等,但是如果不等可以提升效率)
*toString:返回对象的字符串表示
*作用:方便程序内查看对象属性,方便调试代码
*debug学习:
*1.在可能出现bug的地方设置断点
*2.run as debug
*3.f6,执行当前代码;f5,进入当前本句代码的方法内部;f8,快速跳到下一个断点,如果没有下一个断点,运行余下所有代码
*equals:
*1.一致性:使用对象A调用equals和对象b进行比较,每一次的结果都应该一样
*2.自反性:对象A调用equals比较对象b和对象b调用equals比较对象a的结果应该一样
*/
public static void main(String[] args)
{
Person per = new Person("小王",10,150);
Person per1 = new Person("小王",20,140);
Person per2 = per;
System.out.println(per==per1);
System.out.println(per.equals(per1));
String str = "123";
str.equals("123");
str.hashCode();
System.out.println(per.hashCode());
System.out.println(per1.hashCode());
System.out.println(per2.hashCode());
System.out.println(per);
System.out.println(per1);
}
}
class Person {
String name;
int age;
int height;
public Person(String name, int age,int height)
{
super();
this.height = height;
this.name = name;
this.age = age;
}
/*@Override
public boolean equals(Object obj)
{
if(this==obj){
return true;
}
if(obj instanceof Person){
Person per = (Person)obj;
if(this.name.equals(per.name)&&this.age==per.age){
return true;
}
}
return false;
}*/
//重写hashcode
/*@Override
public int hashCode(){
return name.hashCode()+age*31+height*31;
}*/
@Override
public int hashCode()
{
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + height;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Obj
4000
ect obj)
{
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Person other = (Person) obj;
if (age != other.age)
return false;
if (height != other.height)
return false;
if (name == null)
{
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
@Override
public String toString()
{
return "Person[name="+name+",age="+age+"]";
}
}
更多java知识学习请访问:How2J 的 Java教程
/*Object类:java里所有类的父类,顶层的类
*equals:判断两个对象是否"相等";
*hashcode:返回一个对象的哈希码值,是一个整数
*因为之后的容器,例如hashset和hashMap会对元素进行去重的处理;所以equals和hashcode需要同时重写;
*重写之后需要满足的标准:
*当equals的结果为true的时候,要求两个对象的hashcode值相等;
*当equals的结果为false的时候,要求两个对象的hashcode值不等;(hashcode可以相等,但是如果不等可以提升效率)
*toString:返回对象的字符串表示
*作用:方便程序内查看对象属性,方便调试代码
*debug学习:
*1.在可能出现bug的地方设置断点
*2.run as debug
*3.f6,执行当前代码;f5,进入当前本句代码的方法内部;f8,快速跳到下一个断点,如果没有下一个断点,运行余下所有代码
*equals:
*1.一致性:使用对象A调用equals和对象b进行比较,每一次的结果都应该一样
*2.自反性:对象A调用equals比较对象b和对象b调用equals比较对象a的结果应该一样
*/
public static void main(String[] args)
{
Person per = new Person("小王",10,150);
Person per1 = new Person("小王",20,140);
Person per2 = per;
System.out.println(per==per1);
System.out.println(per.equals(per1));
String str = "123";
str.equals("123");
str.hashCode();
System.out.println(per.hashCode());
System.out.println(per1.hashCode());
System.out.println(per2.hashCode());
System.out.println(per);
System.out.println(per1);
}
}
class Person {
String name;
int age;
int height;
public Person(String name, int age,int height)
{
super();
this.height = height;
this.name = name;
this.age = age;
}
/*@Override
public boolean equals(Object obj)
{
if(this==obj){
return true;
}
if(obj instanceof Person){
Person per = (Person)obj;
if(this.name.equals(per.name)&&this.age==per.age){
return true;
}
}
return false;
}*/
//重写hashcode
/*@Override
public int hashCode(){
return name.hashCode()+age*31+height*31;
}*/
@Override
public int hashCode()
{
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + height;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Obj
4000
ect obj)
{
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Person other = (Person) obj;
if (age != other.age)
return false;
if (height != other.height)
return false;
if (name == null)
{
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
@Override
public String toString()
{
return "Person[name="+name+",age="+age+"]";
}
}
更多java知识学习请访问:How2J 的 Java教程
相关文章推荐
- selenium测试(Java)--学习总结
- java中list类测试总结
- 使用java语言通过appium工具测试ios应用一些问题总结
- 接口测试-自动化-Java-总结
- java构造器测试总结
- java中StringBuilder类测试总结
- Java Process 阻塞测试总结
- java递归测试总结
- java中set类测试总结
- (JAVA)Object类总结
- IT人必备:实用项目管理系列订餐系统实例化教学(Java版,10年IT经验总结,涉及测试
- 【Java开发技术之程序测试】Junit4 新功能学习总结
- java web开发总结(四):apache自带压力测试小工具ab(apache benchmark)
- java中static关键字测试总结
- java常量池测试总结
- java中super关键字测试总结
- java中Date类测试总结
- java中包装类测试总结
- java中Map类测试总结