Java高级篇之Object 类
发布日期:2021-07-27 05:06:35
浏览次数:8
分类:技术文章
本文共 2415 字,大约阅读时间需要 8 分钟。
一、Object 类
1、它是所有类的根类,如果一个类未继承其它类它一定继承了Object类,比如
Class Person [extends Object]{} //extends Object 被省略掉 2、Object类中没有属性,只有非私有的方法,这说明它的所有的方法都是子类的方法,这些方法子类都可以重写或者直接进行调用。 3、 在多态中有二个概念叫向上转型和向下转型,其中向上转型的要义就是子类的对象可以直接转换为父类型的对象,Object是所有子类的父类所以所有的对象都可以直接转换为Object类型,比如 Person person;,Object o = person;如果做了这种转换,意味着子类中属于自已的方法都不能使用只能使用Object类的方法。如果一个方法的参数声明为Object类型,比如 public void methd(Object o),意味着所有的对象都可以传入,其内部会自动作类型转换。sendObj(new String("xxxxxxxx"));//内部执行了向上转型public static void sendObj(Object o){ System.out.println(o); //传入的对象类型就是Object类型,该对象只能调用Object的方法,如果需要调用自已的方法进行向下转换(强制转换) System.out.println(((String) o).length());}
4、Object的常用方法
public int hashCode()
返回对象的哈希码值。 支持这种方法是为了散列表,如HashMap提供的那样
1、什么是散列表 该表中的所有元素都有确定的地址,元素的地址又由元素的key值来决定。因此,我们认为对象的哈希值就是对象的地址,System.out.print(obj)的输出结果中的地址值就是调用obj的hashCode()方法的返回值,也就是对象的哈希值。该方法一般由其它的Api来调用,应用程序的设计者一般不会自已去调用。该方法可以被重写,但强烈建议如果对象要放入HashSet集合或作为HashMap集合的key,最好不要重写该方法,否则可能会造成内存泄漏。
2、toString() 方法public String toString()
返回对象的字符串表示形式。 一般来说, toString方法返回一个“textually代表”这个对象的字符串。 结果应该是一个简明扼要的表达,容易让人阅读。 建议所有子类覆盖此方法。
System.out.println(o.toString());//输出对象执行toString方法的返回值System.out.println(o);
在输出语句中,直接使用对象就相当于调用了toString,这是一种默认行为。
如果子类希望改变对象的字符串的表示形式,就可以重写该方法,它的内容可以作为程序执行中日志的输出。@Overridepublic String toString() { return "name="+name+" age="+age;}
4、equals() 方法
public boolean equals(Object obj)
指示一些其他对象是否等于此对象。
用来比较两个对象是否是同一对象,相当于 obj1 == obj2 判断 在String类中,该方法被重写了,因此在String 对象上调用该方法是用来比较串值是否相等,而不是判断是否是同一对象。 另外,有时候会在子类中去重写该方法,如果设计者认为两个对象的属性值完全一致,则这两个对象是相等的对象。@Overridepublic boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Person person = (Person) o; return age == person.age && Objects.equals(name, person.name);}@Overridepublic int hashCode() { return Objects.hash(name, age);}
5、jdk1.7新增加的Objects 类
java.util.Objects public static int hash(Object... values)
Object... values 是1.5新特性,叫可变参数,传值是可传入的参数个数是动态的,没有也行,多个也行。传值时多个参数用 , 分隔,如 Objects.hash(name, age),Objects.hash();
为输入值序列生成哈希码。
常用来在重写hashCode()方法进行调用,用该方法的返回值替换原有方法的返回值。public static boolean equals(Object a, Object b)
方法返回true如果参数相等,彼此false其他。 因此,如果两个参数都是null , true返回null ,如果只有一个参数是null ,则返回false 。 否则,使用第一个参数的equals方法确定相等性。
该方法用来替换 Object中的equals方法,老的方法具有类型不安全的漏洞,如果参数比较的对象是null会抛空指针异常,而新的方法则不会。原码:return (a == b) || (a != null && a.equals(b));
转载地址:https://blog.csdn.net/qq_45442483/article/details/109728215 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关注你微信了!
[***.104.42.241]2024年09月21日 07时58分12秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Spring-AnnotationMetadata
2019-05-27
IP分类以及子网掩码
2019-05-27
Servlet-HttpServletRequestWrapper
2019-05-27
SpringMvc-HandlerMethodArgumentResolver
2019-05-27
SpringMvc-PropertyEditor接口和@InitBinder注解
2019-05-27
Quartz-集群
2019-05-27
Eclipse-习惯设置
2019-05-27
Eclipse-Mybatis-generatorConfig.xml
2019-05-27
SpringBoot-Feign
2019-05-27
Eclipse-maven项目不将resources下的文件打到classpath下
2019-05-27
Java的匿名内部类
2019-05-27
浅谈异常与恋爱
2019-05-27
java中的反射总结
2019-05-27
java中的泛型总结
2019-05-27
java中的正则操作总结
2019-05-27
java中的IO操作总结(一)
2019-05-27
java中的IO操作总结(二)
2019-05-27
java中的IO操作总结(三)
2019-05-27