java中object类实例分析
问:什么是Object类?
答:Object类存储在java.lang包中,是所有java类(Object类除外)的终极父类。当然,数组也继承了Object类。然而,接口是不继承Object类的,Object类不作为接口的父类。
下面,我们就通过实例,对object进行分析
publicclassObjectStu{
/*Object类:java里所有类的父类,顶层的类
*equals:判断两个对象是否"相等";
*hashcode:返回一个对象的哈希码值,是一个整数
*因为之后的容器,例如hashset和hashMap会对元素进行去重的处理;所以equals和hashcode需要同时重写;
*重写之后需要满足的标准:
*当equals的结果为true的时候,要求两个对象的hashcode值相等;
*当equals的结果为false的时候,要求两个对象的hashcode值不等;(hashcode可以相等,但是如果不等可以提升效率)
*toString:返回对象的字符串表示
*作用:方便程序内查看对象属性,方便调试代码
*debug学习:
*1.在可能出现bug的地方设置断点
*2.runasdebug
*3.f6,执行当前代码;f5,进入当前本句代码的方法内部;f8,快速跳到下一个断点,如果没有下一个断点,运行余下所有代码
*equals:
*1.一致性:使用对象A调用equals和对象b进行比较,每一次的结果都应该一样
*2.自反性:对象A调用equals比较对象b和对象b调用equals比较对象a的结果应该一样
*/
publicstaticvoidmain(String[]args)
{
Personper=newPerson("小王",10,150);
Personper1=newPerson("小王",20,140);
Personper2=per;
System.out.println(per==per1);
System.out.println(per.equals(per1));
Stringstr="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);
}
}
classPerson{
Stringname;
intage;
intheight;
publicPerson(Stringname,intage,intheight)
{
super();
this.height=height;
this.name=name;
this.age=age;
}
/*@Override
publicbooleanequals(Objectobj)
{
if(this==obj){
returntrue;
}
if(objinstanceofPerson){
Personper=(Person)obj;
if(this.name.equals(per.name)&&this.age==per.age){
returntrue;
}
}
returnfalse;
}*/
//重写hashcode
/*@Override
publicinthashCode(){
returnname.hashCode()+age*31+height*31;
}*/
@Override
publicinthashCode()
{
finalintprime=31;
intresult=1;
result=prime*result+age;
result=prime*result+height;
result=prime*result+((name==null)?0:name.hashCode());
returnresult;
}
@Override
publicBooleanequals(Objectobj)
{
if(this==obj)
returntrue;
if(obj==null)
returnfalse;
if(getClass()!=obj.getClass())
returnfalse;
Personother=(Person)obj;
if(age!=other.age)
returnfalse;
if(height!=other.height)
returnfalse;
if(name==null)
{
if(other.name!=null)
returnfalse;
}elseif(!name.equals(other.name))
returnfalse;
returntrue;
}
@Override
publicStringtoString()
{
return"Person[name="+name+",age="+age+"]";
}
}
总结
以上就是本文关于java中object类实例分析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:
java内部测试类代码详解
java中继承测试代码分析
java中stack(栈)的使用代码实例
如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!