Object类概述
来源:互联网 发布:念了两句诗 知乎 编辑:程序博客网 时间:2024/06/07 00:09
java.lang.Object
1.java.lang包在使用的时候无需显示导入,编译时由编译器自动导入。
2.Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类。
3.Object类是Java中唯一没有父类的类。其他所有的类,包括标准容器类,比如数组,都继承了Object类中的方法。
构造方法
public Object()
Object类只有这一个构造方法,并且是无参构造,回想之前写构造方法方面的东西时有这样一句话:子类构造方法默认访问的是父类无参构造方法。或许原因就在这!
常见成员方法
1.public int hashCode()
返回该对象的哈希码值
注意:哈希值是根据哈希算法计算出来的值,这个值跟地址有关,但不是实际地址值,可以理解为地址值。(对应关系)
class Demo{//省略了“extends Object”}public class HashCodeDemo { public static void main(String[] args) { Demo d1=new Demo(); Demo d2=new Demo(); Demo d3=d1; System.out.println(d1.hashCode());//366712642 System.out.println(d2.hashCode());//1829164700 System.out.println(d3.hashCode());//366712642 }}
2.public final Class getClass()
返回此 Object 的运行时类。
Class类下也有一方法:public String getName()
以 String 的形式返回此 Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。
package blog_05;class Demo{}public class GetClassDemo { public static void main(String[] args) { Demo d1=new Demo(); Class c=d1.getClass(); String str=c.getName(); //链式编程:String str=d1.getClass().getName(); System.out.println(str);//输出:blog_05.Demo }}
3.public String toString()
返回该对象的字符串表示
Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:
getClass().getName() + ‘@’ + Integer.toHexString(hashCode())
由于此方法意义不大,所以建议子类重写该方法
package blog_05;class Demo{}public class ToStringDemo { public static void main(String[] args) { Demo d1=new Demo(); System.out.println(d1.toString()); System.out.println(d1.getClass().getName() + '@' + Integer.toHexString(d1.hashCode())); }}//输出://blog_05.Demo@15db9742//blog_05.Demo@15db9742
eclipse提供的重写:
package blog_05;class Demo{ private int age; private String name; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Demo [age=" + age + ", name=" + name + "]"; }//eclipse提供的重写}public class ToStringDemo { public static void main(String[] args) { Demo d1=new Demo(); d1.setAge(18); d1.setName("huge"); System.out.println(d1.toString());//Demo [age=18, name=huge] System.out.println(d1);//Demo [age=18, name=huge] //可见直接输出也是调用的对象的toString()方法 }}
4.public boolean equals(Object obj)
指示其他某个对象是否与此对象“相等”。
默认情况下比较的是地址值,意义不大,子类一般重写该方法。
源码:
public boolean equals(Object obj) { return (this == obj);//比较对象地址是否相同 }
举例:
package blog_05;class Demo{ private int age; private String name; public Demo() { super(); } public Demo(int age, String name) { super(); this.age = age; this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } }public class EqualsDemo { public static void main(String[] args) { Demo d1=new Demo(18,"huge"); Demo d2=new Demo(18,"huge"); Demo d3=d1; System.out.println(d1.equals(d2));//false System.out.println(d1.equals(d3));//true }}
eclipse提供的重写:
package blog_05;class Demo{ private int age; private String name; public Demo() { super(); } public Demo(int age, String name) { super(); this.age = age; this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + age; result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Demo other = (Demo) obj; if (age != other.age) return false; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; return true; } }public class EqualsDemo { public static void main(String[] args) { Demo d1=new Demo(18,"huge"); Demo d2=new Demo(18,"huge"); Demo d3=d1; System.out.println(d1.equals(d2));//true System.out.println(d1.equals(d3));//true }}
5.protected Object clone()
Creates and returns a copy of this object.
Object类中的说明是:
protected Object clone()throws CloneNotSupportedException
这个方法比较特殊:
首先,使用这个方法的类必须实现java.lang.Cloneable接口,否则会抛出CloneNotSupportedException异常。
Cloneable接口中不包含任何方法,所以实现它时只要在类声明中加上implements语句即可。
第二个比较特殊的地方在于这个方法是protected修饰的,覆写clone()方法的时候需要写成public,才能让类外部的代码调用。
参考链接:
http://www.cnblogs.com/mengdd/archive/2013/01/03/2842809.html
- Object类概述
- Object类概述
- Object类概述及其构造方法
- Object类中的equals与toString方法概述
- 常见对象_Eclipse的概述使用、API的概述、Object类总结
- Object—C oc概述
- object的有关方法概述
- 多态(多态概述、对象的类型转换、Object类、匿名内部类)
- Inside C++ object Model--对象模型概述
- 对象存储(Object-based Storage)概述
- 对象存储(Object-based Storage)概述
- R-CNN系列object detection方法概述
- Object类
- Object类
- Object类
- Object类
- Object类
- Object类
- http session机制
- Error Handling in Node.js
- iOS如何自定义keyboard
- 51nod 1086 背包问题 V2(多重背包问题)
- 【HDU】 3829 Cat VS Dog
- Object类概述
- 关于微信分享功能开发的一些bug
- Ubuntu 14.04 配置 LAMP+phpMyAdmin PHP(5.5.9)开发环境
- Ionic Framework的一些命令行解释
- ios isa 是什么鬼???
- 大型网站架构(转载)--详细介绍阶段性需求和应对方法
- druid对数据库连接进行加密
- Android 5.0 StatusBar全透明
- [转载]前端工程系列文章之——基础篇