关于java中Object类的某些方法的总结
2015-07-30 11:18
471 查看
最近看了下在开发中常用的Object类的一些方法,如equals,hashCode还有toString方法,下面一一说明;
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
1.equals:
equals函数在Object这个函数中,Object是所有类的父类,那么所有的类都有equals方法
要谈到equals的作用不得不说的是“==”的作用,“==”的作用总结如下:
1.对于基本数据类型,那么就是比较两个值是否相等
2.对于引用数据类型,双等号的作用是判断两个引用是否指向堆内存中的同一个地址
实例:
而equlas是用来比较两个对象的内容相等
对象的内容相等需要符合两个条件:
1.对象的类型相同(可以使用instanceof操作符进行比较)
2.两个对象的成员变量的值完全相同
instanceof是一个操作符
obj instanceof User
判断前面一个对象是否是后面这个对象的类型
Object中equals方法并不实用,一般需要复写
//复写equals方法
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2.hashCode:
hashCode方法主要用于类集框架框架中,也需要复写
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3.toString:
toString方法比较简单,主要用来增加程序的可读性
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
1.equals:
equals函数在Object这个函数中,Object是所有类的父类,那么所有的类都有equals方法
要谈到equals的作用不得不说的是“==”的作用,“==”的作用总结如下:
1.对于基本数据类型,那么就是比较两个值是否相等
2.对于引用数据类型,双等号的作用是判断两个引用是否指向堆内存中的同一个地址
实例:
User u1=new User(); User u2=new User(); User u3=u1;栈内存有三个数据,堆内存有两个数据
而equlas是用来比较两个对象的内容相等
对象的内容相等需要符合两个条件:
1.对象的类型相同(可以使用instanceof操作符进行比较)
2.两个对象的成员变量的值完全相同
instanceof是一个操作符
obj instanceof User
判断前面一个对象是否是后面这个对象的类型
Object中equals方法并不实用,一般需要复写
//复写equals方法
@Override public boolean equals(Object obj) { if(this==obj){ //用双等号比较,说明在堆内存中指向的是同一个对象,值自然相等 return true; } boolean b=obj instanceof User; if(b){ User u=(User) obj; //向下转型不一定成功,有时必须先向上转,再下转型 //String是引用数据类型,这里调用String里面的equals方法,已经复写好了 //比较成员变量 if(this.age==u.age&&this.name.equals(u.name)){ return true; }else{ return false; } }else{ return false; } }
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2.hashCode:
hashCode方法主要用于类集框架框架中,也需要复写
@Override public int hashCode(){ //定义一个质数,只要不是0 int result=17; //31乘法可以用位移来代替,这样做性能是最好的 result=31*result+age; result=31*result+name.hashCode(); return result; }
Map<User,String> map=new HashMap<User,String>(); map.put(u, "abc");
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3.toString:
toString方法比较简单,主要用来增加程序的可读性
System.out.println(u.toString());
相关文章推荐
- Object对象详解(一)之toString
- extjs grid summary 获取平均分数据,并传递object后后台,存储得到想要的数据。
- Microservices and the First Law of Distributed Objects
- [学习笔记—Objective-C]《Objective-C-基础教程 第2版》第十章 对象初始化
- Python中type与Object的区别
- Python中type与Object的区别
- Scala深入浅出实战经典:29,Case class和Case object代码实战解析
- Objective-C中.h文件、.m文件中@interface、@synthesize及其它
- java_src_object
- Object-c Associated Object
- *Delphi容器类之---TOrderedList、TStack、TQueue、TObjectStack、TObjectQueue
- *Delphi容器类之---TList、TObjectList、TComponentList、TClassList
- Object Detection----- Discriminatively Trained Part Based Models
- [objective-c]推送警告处理
- HALCON算子函数——Chapter 13 : Object
- “LINK : fatal error L1093: start_test.obj : object file not found”报错解决
- [objective-c]编译出错 -- NS_REQUIRES_NIL_TERMINATION Error
- 黑马程序员--iOS--Objective-C基础 (面向对象)
- java Object类中常用的方法
- 2015 Objective-C 新特性