java基础学习总结——Object类

永不放弃,一切皆有可能!!!

只为成功找方法,不为失败找借口!

java基础学习总结——Object类

一、Object类介绍

  Object类在JAVA里面是一个比较特殊的类,JAVA只支持单继承,子类只能从一个父类来继承,如果父类又是从另外一个父类继承过来,那他也只能有一个父类,父类再有父类,那也只能有一个,JAVA为了组织这个类组织得比较方便,它提供了一个最根上的类,相当于所有的类都是从这个类继承,这个类就叫Object。所以Object类是所有JAVA类的根基类,是所有JAVA类的老祖宗。所有的类,不管是谁,都是从它继承下来的。

二、toString方法介绍

  

  一个字符串和另外一种类型连接的时候,另外一种类型会自动转换成String类型,然后再和字符串连接。基础的数据类型int,float,double转换成字符串比较简单,按照它们的数字转换过来就成了,可以引用类型呢,Person p = new Person();一个字符串加上这个p,你就不知道要怎么把这个p转换成字符串了,因为这个p是一个引用类型。

 1 package cn.galc.test;
 2
 3 public class TestToString {
 4
 5     public static void main(String[] args) {
 6         Dog d = new Dog();
 7         /**
 8          * 如果没有重写toString方法,那么输出来的默认的字符串内容是“类名+哈希编码”,
 9          * 如:dog=cn.galc.test.Dog@150bd4d
10          * 这里的d就是一个引用类型,打印的时候,这个引用类型d会自动调用toString()方法将自己转换成字符串然后再与字符串”d:=”相连,
11          * 然后一起被打印出来。d为什么可以自动调用toString()方法呢,Dog类里面也没有声明这个toString()方法。
12          * 这是因为toString()方法是Object类里面的方法,而所有的类都是从Object类继承下来的,
13          * Dog类当然也不例外,所以Dog类继承了Object类里面的toString()方法,
14          * 所以Dog类的对象当然可以直接调用toString()方法了。
15          * 但是Dog类对继承下来的toString()方法很不满意,
16          * 因为使用这个继续下来toString()方法将引用对象转换成字符串输出时输出的是一连串令人看不懂的哈希编码。
17          * 为了使打印出来的信息使得正常人都能看得懂,因此要在Dog类里面把这个继承下来的toString()方法重写,
18          * 使得调用这个toString()方法将引用对象转换成字符串时打印出来的是一些正常的,能看得懂的信息。
19          * 在子类重写从父类继承下来的方法时,从父类把要重写的方法的声明直接copy到子类里面来,
20          * 这样在子类里面重写的时候就不会出错了。
21          */
22         System.out.println("dog="+d);//打印结果:dog=I’m a cool Dog
23     }
24 }
25
26 class Dog{
27     /**
28      * 在这里重写了Object类里面的toString()方法后,
29      * 引用对象自动调用时调用的就是重写后的toString()方法了,
30      * 此时打印出来的显示信息就是我们重写toString()方法时要返回的字符串信息了,
31      * 不再是那些看不懂的哈希编码了。
32      */
33     public String toString() {
34         return "I’m a cool Dog";
35     }
36 }

  任何一个类都是从Object类继承下来的,因此在任何一个类里面都可以重写这个toString()方法。toString()方法的作用是当一个引用对象和字符串作连接的时候,或者是直接打印这个引用对象的时侯,这个引用对象都会自动调用toString()方法,通过这个方法返回一个表示引用对象自己正常信息的字符串,而这个字符串的内容由我们自己去定义,默认的字符串内容是“类名+哈希编码”。因此我们可以通过在类里面重写toString()方法,把默认的字符串内容改成我们自己想要表达的正常信息的字符串内容。

时间: 2024-10-01 04:25:52

java基础学习总结——Object类的相关文章

Java提高学习之Object类详解(1)

转自:http://www.importnew.com/10304.html 问:什么是Object类? 答:Object类存储在java.lang包中,是所有java类(Object类除外)的终极父类.当然,数组也继承了Object类.然而,接口是不继承Object类的,原因在这里指出:Section 9.6.3.4 of the Java Language Specification:“Object类不作为接口的父类”.Object类中声明了以下函数,我会在下文中作详细说明. 1 prote

[ 转载 ] Java基础10--关于Object类下所有方法的简单解析

关于Object类下所有方法的简单解析 类Object是类层次结构的根类,是每一个类的父类,所有的对象包括数组,String,Integer等包装类,所以了解Object是很有必要的,话不多说,我们直接来看jdk的源码,开始我们的分析之路 1.hashcode() public native int hashCode();//native说明跟机器有关,跟对象的地址有关 如果我们新建一个类,而hashcode没有被重写的话,那么hashcode返回的值只于对象的地址有关,如果hashcode被重

Java基础教程(19)--Object类

??Object类位于类结构树的最顶端,所有的类都是它的直接或间接子类,因此所有的类都继承了Object类的方法,我们可以在需要的时候覆盖这些方法.下面是一些将会在本文中讨论的Object类的方法: protected Object clone() throws CloneNotSupportedException ??创建并返回此对象的副本. public boolean equals(Object obj) ??判断某个对象是否与这个对象"相等". protected void f

Java基础10:object类

Object类 这部分主要参考http://ihenu.iteye.com/blog/2233249 Object类是Java中其他所有类的祖先,没有Object类Java面向对象无从谈起.作为其他所有类的基类,Object具有哪些属性和行为,是Java语言设计背后的思维体现. Object类位于java.lang包中,java.lang包包含着Java最基础和核心的类,在编译时会自动导入.Object类没有定义属性,一共有13个方法,13个方法之中并不是所有方法都是子类可访问的,一共有9个方法

Java基础—API及Object类和String类

Java 的API(API: Application(应用) Programming(程序) Interface(接口)) Java API就是JDK中提供给我们使用的类,这些类将底层的代码实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可. 1.Object类  Object类是Java语言中的根类,即所有类的父类.它中描述的所有方法子类都可以使用.所有类在创建对象的时候,最终找的父类就是Object.   equals方法    equals方法,用于比较两个对象

Java1.8基础学习之Object类

Object类介绍 Object类是所有Java类的祖先.每个类都使用 Object 作为超类.所有对象(包括数组)都实现这个类的方法. 在不明确给出超类的情况下,Java会自动把Object作为要定义类的超类. 可以使用类型为Object的变量指向任意类型的对象. Object类有一个默认构造方法pubilc Object(),在构造子类实例时,都会先调用这个默认构造方法. 查看源码 public class Object { private static native void regist

Java基础小常识-Object类-(15)

一.演示实例1 /* Object:所有类的根类. Object是不断抽取而来,具备着所有对象都具备的共性内容. 常用的共性功能: *//*class Fu // extends Object{    Fu()    {        super();    }}class Zi extends Fu{    Zi()    {        super();    }}*/ class Person extends Object{    private int age;    Person(i

Java基础学习191221(可变参数,数组,Array类,稀疏数组,继承重写多态,抽象类,接口)

Java基础学习 可变参数 在方法声明中,在指定参数类型后加一个省略号(...). 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数.任何普通参数都必须在它之前声明. public class printMax { public static void main(String[] args) { printMax(1,5,8,78,415,15); } public static void printMax( double... numbers){ if (numbers.length

Java基础学习总结——Java对象的序列化和反序列化

一.序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化. 把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中: 2) 在网络上传送对象的字节序列. 在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存.比如最常见的是Web服务器中的Session对象,当有 10万用户并发访问,就有可能出现10万个Session对象,内存可能吃不消,于是Web容器就会把一些s