Java之toString方法

  在Java中所有的类都有一个共同的父类Object(默认继承,不用加extends关键字),toString方法就是Object类的一个方法,用来返回该对象的字符串表示形式(个人总结:需要把该类转换成String类型的时候就会调用该方法)

  父类Object中的toString()方法

  

  可以看到该方法返回的是"类名@hashCode值"形式的字符串

  但这并不是我们所想要的结果,我们希望这个方法返回的是该类的所有属性拼接的字符串,Object的toString方法已经不够用了,因此,我们需要重写该方法

  

  既然已经重写好了该方法,那该方法是什么时候被调用的呢?

  我们经常使用System.out.println()方法来打印一个基本类型的变量或引用变量,我们根据源代码来查看是如何运行的:

  System.out.println()通过标准输出流对象调用println()方法

  

  该方法是用于打印基本类型变量或引用变量,我们在看看prinln()方法是如何实现的?

  

  该方法被重载了,基本类型的参数直接打印出该值,我们主要关注引用类型参数是如何实现

  

  String.valueOf()方法用于返回Object参数的字符串表示形式,将该值用String类型的变量s接收,并打印出来,我们在看看valueOf()方法是怎么实现的

  

  若该引用变量不是指向空引用,则调用该引用变量所指向的对象的toString方法

  由此,我们可以判断,当System.out.println()中的参数类型是基本类型参数时,直接打印,若是引用类型时,调用该引用类型所指向的对象的toString方法,如果该子类对象不重写toString方法,则打印的是"类名@hashCode值"形式的字符串,通常建议重写toString方法

原文地址:https://www.cnblogs.com/Adil/p/10353737.html

时间: 2024-11-13 08:19:19

Java之toString方法的相关文章

JAVA中toString方法的作用

因为它是Object里面已经有了的方法,而所有类都是继承Object,所以“所有对象都有这个方法”. 它通常只是为了方便输出,比如System.out.println(xx),括号里面的“xx”如果不是String类型的话,就自动调用xx的toString()方法 总而言之,它只是sun公司开发java的时候为了方便所有类的字符串操作而特意加入的一个方法 回答补充: 写这个方法的用途就是为了方便操作,所以在文件操作里面可用可不用 例子1: public class Orc { public st

JAVA中toString方法

因为它是Object里面已经有了的方法,而所有类都是继承Object,所以"所有对象都有这个方法". 它通常只是为了方便输出,比如System.out.println(xx),括号里面的"xx"如果不是String类型的话,就自动调用xx的toString()方法 总而言之,它只是sun公司开发java的时候为了方便所有类的字符串操作而特意加入的一个方法 回答补充: 写这个方法的用途就是为了方便操作,所以在文件操作里面可用可不用 例子1: public class

java重写toString()方法

toString()方法是Object类的方法,调用toString()会返回对象的描述信息. 1)为什么重写toString()方法呢? 如果不重写,直接调用Object类的toString()方法,打印的是该对象的内存地址(类名@哈希码值).如下代码所示: class Person { String name; String sex; int age; public Person() {} public Person(String name, String sex, int age) { t

Java对象toString()方法

对象的字符串表示以可读格式包含有关对象状态的信息.Object类的toString()方法表示字符串中类的对象.Object类提供了toString()方法的默认实现. 它返回一个以下格式的字符串: 1 <fully qualified class name>@<hash code of object in hexadecimal> 示例 考虑下面的代码及其输出.如是亲自执行代码可能会得到不同的输出. 1 2 3 4 5 6 7 public class Main{   publi

java重写toString方法

在输出对象属性时,重写toString按照你希望的输出形式重写 object类里的toString只是把字符串的直接打印,数字的要转化成字符再打印,而对象,则直接打印该对象的hash码.所以当你要想按照你想要的格式去字符串一些对象的时候,就需要重写toString了. 在实体类中重写toString方法 public String toString() { return "Zoo{" + "id=" + id + ", name='" + nam

java基础-toString(方法)

示例代码 package com.runoob.test; class Cap{ String name; int age; public String toString(){ return "我的姓名:"+name+"我的年龄:"+age; } } public class A6_10{ public static void main(String[] args){ Cap one = new Cap(); one.name="小明"; one

java Byte.toString 方法与String.ValueOf(Byte)效率比较

int times = 10000000; Byte[] li = new Byte[times]; for (int i = 0; i < times; i++) { li[i] = (byte) i; } long timeA = System.currentTimeMillis(); for (int i = 0; i < times; i++) { li[i].toString(); } long timeB = System.currentTimeMillis(); for (int

打印对象和toString方法

JAVA对象 java对象是都是Object类的实例,都可直接调用该类中定义的方法,这些方法提供了处理java对象的通用方法. > > 6.2.1打印对象和toString方法    先看下面程序:  程序清单:codes/06/6-2/PrintObjectjava public class PrintObject{ public static void main(String args[]){ Person p = new Person("帅气de猪八戒"); Syst

原!! java直接打印一个对象时,并不是直接调用该类的toString方法 ,而是会先判断是否为null,非null才会调用toString方法

网上看了好多java直接打印一个对象时,直接调用该类的toString方法 . 但是: Object obj=null; System.out.println(obj);//没有报错 System.out.println(obj.toString());//报空指针异常 System.out.println(obj);既然也是直接调用toString方法,为什么不报错??? 原因总结如下: 1.调用Object类的toString方法,必须保证object不是null值,否则将抛出NullPoi