Object类
来源:互联网 发布:淘宝产品标题怎么写 编辑:程序博客网 时间:2024/06/03 13:58
/* * 类 Object 是类层次结构的根类。每个类都使用 Object 作为超类。所有对象(包括数组)都实现这个类的方法。 * * Object() 空参构造方法,因为所有的子类都会默认调用父类的空参构造方法 * * OOP面向对象思想:封装,继承,多态 * 是根据现实生活中的事物封装得来的,封装,继承,多态是模拟现实生活中的关系 * 面向对象编程:Think in java(万物皆对象) * 任何一类事物都可以封装成一个类,每一个具体的事物可以用一个对象表示 * 怎么封装一个类? * 描述(属性,成员变量):name,age,sex,address,phoneNumber... * 功能(函数,成员方法):eat,sleep,playGame,say... * 创建对象: * 类名 对象名 = new 类名(可能有参数); * 对象名.成员 */public class ObjectDemo { public static void main(String[] args) throws Exception { // public int hashCode()返回该对象的哈希码值,默认的hashCode计算方式是根据地址值计算得来的 Person p = new Person(); Person p2 = new Person(); System.out.println(p==p2);//false System.out.println(p.hashCode());//366712642 System.out.println(p2.hashCode());//1829164700 String s = new String("哈哈"); String s2 = new String("哈哈"); System.out.println(s==s2);//false //String类的hashCode方法重写了,是根据内容计算得来的 System.out.println(s.hashCode());//694528 System.out.println(s2.hashCode());//694528 //一般情况下,JDK提供的类都会重写hashCode方法 System.out.println("----------------------------"); //public final Class<?> getClass()返回此 Object 的运行时类 //根据面向对象的思想,可以把一个抽象概念的类用Class来表示;一个类有包名,类名,方法,属性,构造方法.... Class clazz = p.getClass(); Class clazz2 = p2.getClass(); System.out.println(clazz==clazz2);//true //public String getName()以 String 的形式返回此 Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。 System.out.println(clazz.getName());//cn.edu360.Person //public String getSimpleName()返回源代码中给出的底层类的简称。 System.out.println(clazz.getSimpleName());//Person System.out.println("----------------------------"); //public String toString()返回该对象的字符串表示 //println默认会调用一个对象的toString方法 //Object类的toString方法的默认实现:getClass().getName() + "@" + Integer.toHexString(hashCode()) System.out.println(p);//name=张三,age=10 System.out.println(p2.toString());//name=张三,age=10 System.out.println(s);//哈哈 System.out.println("----------------------------"); //public boolean equals(Object obj)指示其他某个对象是否与此对象“相等”。 //在java编程中,一般使用equals比较内容是否相等;使用==比较地址值是否相等 System.out.println(s.equals(s2));//true System.out.println(s==s2);//false p.name = "哈哈"; System.out.println(p.equals(p2));//false System.out.println(p==p2);//false System.out.println("----------------------------"); //protected Object clone()创建并返回此对象的一个副本 //我想根据p对象创建一个克隆对象 Object obj = p.clone(); Person p3 = (Person)obj; //当对象里面有引用类型的成员变量时,这个引用类型的成员变量并没有进行克隆成功 System.out.println(p3==p);//false System.out.println(p.obj==p2.obj);//false System.out.println(p.obj==p3.obj);//true,所以我说是浅克隆 }}class Person implements Cloneable{ public String name = "张三"; public int age = 10; public Object obj = new Object(); @Override protected Object clone() throws CloneNotSupportedException { // TODO Auto-generated method stub return super.clone(); } //因为不满意父类的equals方法,所以我们重写equals方法 @Override public boolean equals(Object 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 (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; return true; } /*@Override public boolean equals(Object obj) { //判断obj是否等于null,如果等于null直接返回false if(null==obj){ return false; } //如果obj不是Person的类型,直接返回false if(!(obj instanceof Person)){ return false; } //如果obj的字节码文件对象和this的字节码文件对象不一样,直接返回false if(this.getClass()!=obj.getClass()){ return false; } //如果以上三关都通过了,那么就可以确定obj是Person的类型 Person p = (Person)obj; //比较p和this的成员变量是否相等 return this.age==p.age?this.name.equals(p.name):false; }*/ //因为不满意父类的toString方法实现,可以重写toString方法 @Override public String toString() { return "Person [name=" + name + ", age=" + age + "]"; } /*@Override public String toString() { return "name="+name+",age="+age; }*/}
阅读全文
0 0
- Object类
- Object类
- Object类
- Object类
- Object类
- Object类
- Object类
- Object类
- Object类
- object类
- Object类
- Object类
- Object类
- Object类
- Object类
- Object类
- Object类
- Object类
- Spring Data MongoDB:使用GridFS保存二进制文件
- 为什么我会说JavaScript是世界上最好的语言
- 为什么使用函数?
- Leetcode740. 删除元素获取最大值
- C/C++ --MPI安装MPICH2小问题
- Object类
- bzoj1036树链剖分模板题
- Scapy学习笔记一
- 调试器试图再次打电话
- Aspects 是什么,解决了什么问题?
- [数据结构]堆排序的C语言简单实现
- MySQL的索引的实现方式以及Btree索引和hash索引的区别
- leetcode题解-92. Reverse Linked List II
- 通达OA2017破解版完美小版合同管理组件无限授权文件