Java中Object toString方法简介_动力节点Java学院整理

一、Object类介绍 

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

二、toString方法介绍 

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

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

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

以上所述是小编给大家介绍的Java中Object toString方法简介_动力节点Java学院整理,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • java 中 String format 和Math类实例详解

    java 中 String format 和Math类实例详解 java字符串格式化输出 @Test public void test() { // TODO Auto-generated method stub //可用printf(); System.out.println(String.format("I am %s", "jj")); //%s字符串 System.out.println(String.format("首字母是 %c",

  • java 中InputStream,String,File之间的相互转化对比

    InputStream,String,File相互转化  1. String --> InputStream InputStream String2InputStream(String str){ ByteArrayInputStream stream = new ByteArrayInputStream(str.getBytes()); return stream; } 2. InputStream --> String String inputStream2String(InputStre

  • Java 中 String,StringBuffer 和 StringBuilder 的区别及用法

    1 简介 在 Java 语言中,共有 8 个基本的数据类型,分别为:byte.short.int.long.float.double.boolean 和 char,其中 char 类型用于表示单个字符,例如 a.b.c .A.B.C.& 这些大小写字母或者特殊字符等等.在实际的编程中,单个的字符并没有我们想象中用的那么频繁,反而是多个字符组成的"字符串"更为常见,但是在基本的数据类型中,并没有字符串这种数据类型.为了解决这个问题,Java 语言为我们提供了一个被 final 关

  • java中的 toString()方法实例代码

    前言: toString()方法 相信大家都用到过,一般用于以字符串的形式返回对象的相关数据. 最近项目中需要对一个ArrayList<ArrayList<Integer>> datas  形式的集合处理. 处理要求把集合数据转换成字符串形式,格式为 :子集合1数据+"#"+子集合2数据+"#"+....+子集合n数据. 举例: 集合数据 :[[1,2,3],[2,3,5]]  要求转成为 "[1,2,3]#[2,3,5]"

  • Java String 和StringBuffer的详解及区别

    Java String 和StringBuffer的详解及区别 Java平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含 多个字符的字符数据.String类表示内容不可改变的字符串.而StringBuffer类表示内 容可以被修改的字符串. 当你知道字符数据要改变的时候你就可以使用StringBuffer.典型地,你可以使用StringBuffers来动态构造 字符数据.另外,String实现了equals方法,new String("abc"

  • JAVA String转化成java.sql.date和java.sql.time方法示例

    前言 众所周知在Java中String 转 java.sql.date 是不可以直接实现的,需要先转成 java.util.date 然后再转成 java.sql.date.关于java.util.Date与java.sql.Date的区别可以点击这篇文章查看详情. 方法示例代码如下 String -> java.sql.date    输入 2016-11-11 /** * @param 返回java.sql.Date格式的 * */ public java.sql.Date strToDat

  • Java String对象使用方法详解

    Java String对象使用方法详解 先来看一个例子,代码如下: public class Test { public static void main(String[] args) { String str = "abc"; String str1 = "abc"; String str2 = new String("abc"); System.out.println(str == str1); System.out.println(str1

  • Java中Object toString方法简介_动力节点Java学院整理

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

  • Java中的Web MVC简介_动力节点Java学院整理

    Web开发中的请求-响应模型: 在Web世界里,具体步骤如下: 1.Web浏览器(如IE)发起请求. 2.Web服务器(如Tomcat)接收请求,处理请求(比如用户新增,则将把用户保存一下),最后产生响应(一般为html). 3.web服务器处理完成后,返回内容给web客户端(一般就是我们的浏览器),客户端对接收的内容进行处理(如web浏览器将会对接收到的html内容进行渲染以展示给客户). 因此,在Web世界里: 都是Web客户端发起请求,Web服务器接收.处理并产生响应. 一般Web服务器是

  • Java中常用的数据库连接池_动力节点Java学院整理

    定义 数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标.数据库连接池正是针对这个问题提出来的. 数据库连接池负责分配.管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个:释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏.这项技术能明显提高对数据库操作的性能. 参考资料 DBCP 下载地址:http://

  • Java中的抽象工厂模式_动力节点Java学院整理

    定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类. 类型:创建类模式 类图: 抽象工厂模式与工厂方法模式的区别 抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象.他与工厂方法模式的区别就在于,工厂方法模式针对的是一个产品等级结构:而抽象工厂模式则是针对的多个产品等级结构.在编程中,通常一个产品结构,表现为一个接口或者抽象类,也就是说,工厂方法模式提供的所有产品都是衍生自同一个接口或抽象类,而抽象工厂模式所提供的产品则是衍生自不同的接口或抽象类.

  • Java数据库连接池之c3p0简介_动力节点Java学院整理

    c3p0是什么 c3p0的出现,是为了大大提高应用程序和数据库之间访问效率的. 它的特性: 编码的简单易用 连接的复用 连接的管理 说到c3p0,不得不说一下jdbc本身,c3p0愿意就是对数据库连接的管理,那么原有的概念还是得清晰:DriverManager.Connection.StateMent.ResultMent. jdbc:java database connective这套API,不用多说,是一套用于连接各式dbms或连接桥接器的api,两个层级:上层供应用方调用api,下层,定义

  • Java Set简介_动力节点Java学院整理

    1. 概述   Java 中的Set和正好和数学上直观的集(set)的概念是相同的.Set最大的特性就是不允许在其中存放的元素是重复的.根据这个特点,我们就可以使用Set 这个接口来实现前面提到的关于商品种类的存储需求.Set 可以被用来过滤在其他集合中存放的元素,从而得到一个没有包含重复新的集合. 2. 常用方法 按照定义,Set 接口继承 Collection 接口,而且它不允许集合中存在重复项.所有原始方法都是现成的,没有引入新方法.具体的 Set 实现类依赖添加的对象的 equals()

  • Java Map简介_动力节点Java学院整理

    Map简介 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值.此接口取代 Dictionary 类,后者完全是一个抽象类,而不是一个接口. Map 接口提供三种collection 视图,允许以键集.值集或键-值映射关系集的形式查看某个映射的内容.映射顺序 定义为迭代器在映射的 collection 视图上返回其元素的顺序.某些映射实现可明确保证其顺序,如 TreeMap 类:另一些映射实现则不保证顺序,如HashMap 类. 注:将可变对象用作映射键时必须格外小心.当对

  • Java List简介_动力节点Java学院整理

    Java中可变数组的原理就是不断的创建新的数组,将原数组加到新的数组中,下文对Java List用法做了详解.  List:元素是有序的(怎么存的就怎么取出来,顺序不会乱),元素可以重复(角标1上有个3,角标2上也可以有个3)因为该集合体系有索引  ArrayList:底层的数据结构使用的是数组结构(数组长度是可变的百分之五十延长)(特点是查询很快,但增删较慢)线程不同步  LinkedList:底层的数据结构是链表结构(特点是查询较慢,增删较快)  Vector:底层是数组数据结构 线

  • RandomAccessFile简介_动力节点Java学院整理

    RandomAccessFile RandomAccessFile 是随机访问文件(包括读/写)的类.它支持对文件随机访问的读取和写入,即我们可以从指定的位置读取/写入文件数据. 需要注意的是,RandomAccessFile 虽然属于java.io包,但它不是InputStream或者OutputStream的子类:它也不同于FileInputStream和FileOutputStream. FileInputStream 只能对文件进行读操作,而FileOutputStream 只能对文件进

  • Java字符编码简介_动力节点Java学院整理

    1. 概述 本文主要包括以下几个方面:编码基本知识,Java,系统软件,url,工具软件等. 在下面的描述中,将以"中文"两个字为例,经查表可以知道其GB2312编码是"d6d0 cec4",Unicode编码为"4e2d 6587",UTF编码就是"e4b8ad e69687".注意,这两个字没有iso8859-1编码,但可以用iso8859-1编码来"表示". 2. 编码基本知识 最早的编码是iso88

随机推荐