Java(object类及方法简介)
2016-06-19 21:05
417 查看
object 类介绍
java.lang.Objectjava.lang包在使用的时候无需显示导入,编译时由编译器自动导入。
Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类。
Object类是Java中唯一没有父类的类。
其他所有的类,包括标准容器类,比如数组,都继承了Object类中的方法。
object 类中的方法
因为每一个类都直接或间接的继承object类,所以一般要重写object类中的方法,以实现相应的操作。接下来将用例子具体实现。列表内容
1.String toString()
当打印引用,如调用System.out.println()时,会自动调用对象的toString()方法,打印出引用所指的对象的toString()方法的返回值,因为每个类都直接或间接地继承自Object,因此每个类都有toString()方法原来的方法内容
public String toString(){ return getClass().getName() + "@" + Integer.toHexString(hashCode()); }
public String toString(){ return this.getName(); }
2.boolean equals(Object obj)
对于Object类的equals()方法来说,它判断调用equals()方法的引用于传进来的引用是否一致,即这两个引用是否指向的是同一个对象。Object类中的equals()方法如下:
public boolean equals(Object obj){ return (this == obj); }
即Object类中的equals()方法等价于==。
只有当继承Object的类覆写(override)了equals()方法之后,继承类实现了用equals()方法比较两个对象是否相等,才可以说equals()方法与==的不同。
equals()方法需要具有如下特点:
自反性(reflexive):任何非空引用x,x.equals(x)返回为true。
对称性(symmetric):任何非空引用x和y,x.equals(y)返回true当且仅当y.equals(x)返回true。
传递性(transitive):任何非空引用x和y,如果x.equals(y)返回true,并且y.equals(z)返回true,那么x.equals(z)返回true。
一致性(consistent):两个非空引用x和y,x.equals(y)的多次调用应该保持一致的结果,(前提条件是在多次比较之间没有修改x和y用于比较的相关信息)。
约定:对于任何非空引用x,x.equals(null)应该返回为false。
并且覆写equals()方法时,应该同时覆写hashCode()方法,反之亦然。
一个应用了equal和toString方法的简单类——>
public class People { private String name; // 构造方法 public People(String name) { this.name = name; } // get set 方法 public String getName() { return name; } public void setName(String name) { this.name = name; } // 重写toString方法 @Override public String toString() { return this.getName(); } // 重写equal方法 @Override public boolean equals(Object obj) { String name=((People)obj).getName(); System.out.println(name); return this.name==name; } public static void main(String[] args) { People p1=new People("张三"); People p2=new People("张三"); People p3=new People("李四"); System.out.println(p3); System.out.println("p1.equals(p2):"+p1.equals(p2)); System.out.println("p1.equals(p3):"+p1.equals(p3)); } }
输出结果:
李四 张三 p1.equals(p2):true 李四 p1.equals(p3):false
相关文章推荐
- List<Map<String,Object>>取值知识点
- 论文笔记|You Only Look Once: Unified, Real-Time Object Detection
- 论文笔记| Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
- 论文笔记|Rich feature hierarchies for accurate object detection and semantic segmentation
- 【Objective-C】01-Objective-C概述
- iOS CFObject和NSObject的相互转换(使用bridge)
- Delphi调用自身onchange事件,如提示缺少声明object时,不能调用,用此方法!
- 【git常见问题】fatal: Not a valid object name: 'master'.
- Objective-C笔记大全
- iOS:Objective-C字面量
- Android UiAutomator :关于Object属性clickable为false处理
- 论文笔记之:Learning to Track: Online Multi-Object Tracking by Decision Making
- 解决三星手机post请求时参数包括集合,封装成JSONObject,结果不是数组而是数组的地址问题
- List<Map<String,Object>>使用Java代码遍历以获取String,Object的值
- Objective-C Mojo和Django 对接
- 获取Object的所有keys or values
- 论文阅读笔记:You Only Look Once: Unified, Real-Time Object Detection
- 使用ExpandoObject来实现多个Model传送至视图
- Objective-C浮点数转化整数(向上取整、向下取整)
- objective-c static变量的使用总结