1.toString()方法
Object类具有一个toString()方法,你创建的每个类都会继承该方法。它返回对象的一个String表示,并且对于调试非常有帮助。然而对于默认的toString()方法往往不能满足需求,需要覆盖这个方法。
toString()方法将对象转换为字符串。看以下代码:
package sample;
 
class Villain {
    private String name;
 
    protected void set(String nm) {
       name = nm;
    }
 
    public Villain(String name) {
       this.name = name;
    }
 
    public String toString() {
       return "I'm a Villain and my name is " + name;
    }
}
 
public class Orc extends Villain {
    private int orcNumber;
 
    public Orc(String name, int orcNumber) {
       super(name);
       this.orcNumber = orcNumber;
    }
 
    public void change(String name, int orcNumber) {
       set(name);
       this.orcNumber = orcNumber;
    }
 
    public String toString() {
       return "Orc" + orcNumber + ":" + super.toString();
    }
 
    public static void main(String[] args) {
       Orc orc = new Orc("Limburger", 12);
       System.out.println(orc);
       orc.change("Bob", 19);
       System.out.println(orc);
    }
}
 
结果:
sample.Orc@11b86e7
sample.Orc@11b86e7
如果去掉注释,即加入2个toString()方法后,得到
结果:
Orc12:I'm a Villain and my name is Limburger
Orc19:I'm a Villain and my name is Bob
 
2.在容器类中使用toString()
编写一个工具类,用于在控制台输出Iterator。
import java.util.Iterator;
 
public class Printer {
    static void printAll(Iterator e){
       while(e.hasNext()){
           System.out.println(e.next());
       }
    }
}
在Hamster类中重写父类的toString()方法。
public class Hamster {
    private int hamsterNumber;
    public Hamster(int hamsterNumber){
       this.hamsterNumber=hamsterNumber;
    }
 
    public String toString(){
       return "This is Hamster #"+hamsterNumber;
    }
}
在HamsterMaze类中使用容器类加载Hamster类对象并输出结果。
import java.util.ArrayList;
import java.util.List;
 
public class HamsterMaze {
    @SuppressWarnings("unchecked")
    public static void main(String[] args){
       List list=new ArrayList();
       for(int i=0;i<3;i++)
           list.add(new Hamster(i));
       Printer.printAll(list.iterator());
    }
}
结果:
This is Hamster #0
This is Hamster #1
This is Hamster #2
 
3.一个实现toString()的通用的Bean
在作一个项目时发现,许多bean需要实现toString()方法,就实现一个通用的bean,然后通过其他继承即可。
import java.lang.reflect.Field;
 
public class BaseBean {
  
    public String toString() {
       StringBuffer sb = new StringBuffer();
       try {
           Class t = this.getClass();
           Field[] fields = t.getDeclaredFields();
           for (int i = 0; i < fields.length; i++) {
              Field field = fields[i];
              field.setAccessible(true);
              sb.append("{");
              sb.append(field.getName());
              sb.append(":");
              if (field.getType() == Integer.class) {
                  sb.append(field.getInt(this));
              } else if (field.getType() == Long.class) {
                  sb.append(field.getLong(this));
              } else if (field.getType() == Boolean.class) {
                  sb.append(field.getBoolean(this));
              } else if (field.getType() == char.class) {
                  sb.append(field.getChar(this));
              } else if (field.getType() == Double.class) {
                  sb.append(field.getDouble(this));
              } else if (field.getType() == Float.class) {
                  sb.append(field.getFloat(this));
              } else
                  sb.append(field.get(this));
              sb.append("}");
           }
       } catch (Exception e) {
           e.printStackTrace();
       }
       return sb.toString();
    }
}
 
测试类
public class TestBean extends BaseBean {
 
    private int id;
 
    public int getId() {
       return id;
    }
 
    public void setId(int id) {
       this.id = id;
    }
 
    public static void main(String[] args) {
       TestBean testBean = new TestBean();
       testBean.setId(9);
       System.out.println(testBean.toString());
    }
}
结果
{id:9}

java 中toString()方法详解的更多相关文章

  1. Java中常见方法详解合集(方法的定义及语法结构)

    Java的方法定义 1.方法的定义 方法是控制对象的动作行为方式与准则,在Java中方法位于类体下又有另一种含义. 普通的方法在类中称为"实例方法",因为方法的调用需要创建对象,而 ...

  2. java中的注解详解和自定义注解

    一.java中的注解详解 1.什么是注解 用一个词就可以描述注解,那就是元数据,即一种描述数据的数据.所以,可以说注解就是源代码的元数据.比如,下面这段代码: @Override public Str ...

  3. angularJS中$apply()方法详解

    这篇文章主要介绍了angularJS中$apply()方法详解,需要的朋友可以参考下   对于一个在前端属于纯新手的我来说,Javascript都还是一知半解,要想直接上手angular JS,遇到的 ...

  4. [转载]java中import作用详解

    [转载]java中import作用详解 来源: https://blog.csdn.net/qq_25665807/article/details/74747868 这篇博客讲的真的很清楚,这个作者很 ...

  5. Java中日志组件详解

    avalon-logkit Java中日志组件详解 lanhy 发布于 2020-9-1 11:35 224浏览 0收藏 作为开发人员,我相信您对日志记录工具并不陌生. Java还具有功能强大且功能强 ...

  6. 自己(转)JAVA中toString方法的作用

    JAVA中toString方法的作用 因为它是Object里面已经有了的方法,而所有类都是继承Object,所以“所有对象都有这个方法”. 它通常只是为了方便输出,比如System.out.print ...

  7. java的sleep方法详解

    java的sleep方法详解: sleep并不是永久占有CPU,没有那个线程能永久占用CPU.它是指在自己时间片内睡眠,而不是急着交出CPU.yield()就是自己愿意立即交出时间片.因此一个线程sl ...

  8. Java中dimension类详解

    Java中dimension类详解 https://blog.csdn.net/hrw1234567890/article/details/81217788

  9. JAVA中Object类方法详解

    一.引言 Object是java所有类的基类,是整个类继承结构的顶端,也是最抽象的一个类.大家天天都在使用toString().equals().hashCode().waite().notify() ...

  10. 02.ToString()方法详解

    ToString()使用方法汇总(C#) C 货币 2.5.ToString("C") ¥2.50 D 十进制数 25.ToString("D5") 00025 ...

随机推荐

  1. Django 组件-cookie与session

    Cookie概述 什么叫Cookie Cookie翻译成中文是小甜点,小饼干的意思.在HTTP中它表示服务器送给客户端浏览器的小甜点.其实Cookie是key-value结构,类似于一个python中 ...

  2. canvas之抒写文字

    <canvas id="canvas" width="500" height="400" style="background ...

  3. CentOS7 系统菜单中添加快捷方式

    一,在桌面新建一个文件 文件名随意,但必须带有.desktop的后缀名, 以Eclipse为例 vi /usr/share/applications/eclipse.desktop 二,在文件中写入如 ...

  4. 关于调整TimePicker, DatePicker的大小,样式

    最近在做一个时间选择器,想把要DatePicker和TimePicker放在一起使用,无赖他们的大小样式是被Google写死了,找不到相应的属性来设置,自己花了点时间写了一个使用的Demo,运行的效果 ...

  5. Android——日期格式化转换符

    常见日期格式化转换符 转换符 说 明 示 例 %te  一个月中的某一天(1-31)  2 %tb  指定语言环境的月份简称  Feb(英文).二月(中文) %tB  指定语言环境的月份全称  Feb ...

  6. wampserver提示You don't have permission to access

    在wampserver上单击左键,打开菜单中Apache下的httpd.conf 注视掉以下代码  <Directory “C:/wamp/www”> Deny from all Allo ...

  7. spring声明式事务管理详情解析

    前沿:通过对spring事务管理有了比较深入学习,本文将不做实例,而是指定具体的类和配置文件进行讲解. 本文内容: 1.了解什么是声明式事务? 2.声明式事务管理分别有哪几种? 3.这几种事务管理之间 ...

  8. nova volume-create的使用

    处理cinder可以直接创建volume外,nova也是可以的 如: 可以看出创建一个名字为volume2的卷,大小为10G 把创建好的volume2卷直接挂在vm虚拟机上 如:先查看计算节点有几个v ...

  9. vs2010 安装 Ajax Control Toolkit

    Ajax Control Toolkit 7.1005.0 The Ajax Control Toolkit contains a rich set of controls that you can ...

  10. python的socket编程之udp编程

    在上篇文章中,仅仅讲述了如何进行了TCP编程,在本章中,将讲述使用udp进行编码,先看如下的代码,服务器端: root@python 513]# cat serverudp.py #!/usr/bin ...