打印对象和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猪八戒");
   System.out.println(p.toString());  //跟p.toString()效果一样
    }
}
class Person {
    private String name;
    public Person(String name){
        this.name = name;
    }
    public void info(){
        System.out.println("此人名为:" + name);
    }
}  

输出:

[email protected]

当读者运行上面程序时,可能看到不同的输出结果:@符号后的6位16进制数字可能发生改变
但这个输出结果是怎么来的呢?System.out.println方法只能在控制台输出字符串.当使用该方法输出
Person对象时,实际上输出的是Person对象的toString()方法的返回值,也就是说,下面代码结果完全一样:

System.out.println(p);
System.out.println(p.toString());
    toString方法是Object类里的一个实例方法,所有Java类都是Object类的子类,因此所有Java对
象都具有toString方法。
    不仅如此,所有Java对象都可以和字符串进行连接运算,当Java对象和字符串进行连接运算时,
系统自动调用Java对象toString方法的返回值和字符串进行连接运算,即下面两行代码的结果也完全
相同:
    String pStr = p + "";
    String pstr = p.toString() + "";
    toString方法是一个非常特殊的方法,它是一个“自我描述”方法,该方法通常用于实现这样一个
功能:当程序员直接打印该对象时,系统将会输出该对象的“自我描述”信息,用以告诉外界该对象
具有的状态信息。

时间: 2024-11-10 08:15:24

打印对象和toString方法的相关文章

__x__(64)0925第十天__ JavaScript 对象的 toString() 方法改变输出

JavaScript 对象的 toString() 方法改变输出 在平常,我们 console.log(对象);    // 会打印 [Object Object] 但是我们想要更详细的输出,此时,我们可以重写 对象.toString() 方法 Person.toString = function(){ return "Person ["+this.name+" , "+this.gender+","+this.age+"]"

你会如何给全局对象添加toString()方法

首先,在讨论如何给所有方法window对象添加tostring方法的时候,我们先来说说window的对象继承与对象实例,以及构造函数的this指针,还有变量的提升与方法的调用方式,最终一探window对象与Window方法(函数)的处理方式. 在说window对象之前,请让我们一起写一个实例的方法暖暖身,跳水之前应该做热身动作,虽然我们不跳水,不过写代码也需要做一个热身,这样才能适应下面的高难度动作. 废话好多,裁判看不下去了,开始准备你的姿势,让我们开场就拿个满分,吓死裁判,但是看到裁判吓到自

[Effective JavaScript 笔记]第28条:不要信赖函数对象的toString方法

js函数有一个非凡的特性,即将其源代码重现为字符串的能力. (function(x){ return x+1 }).toString();//"function (x){ return x+1}" 反射获取函数源代码的功能很强大,使用函数对象的toString方法有严重的局限性.toString方法的局限性ECMAScript标准对函数对象的toString方法的返回结果(即该字符串)并没有任何要求.这意味着不同的js引擎将产生不同的字符串,甚至产生的字符串与该函数并不相关. 如果函数

整个对象也可以打印?-重写toString方法

对象也可以打印? 看到对象是可以打印的,打印了全类名+内存地址 若想自定义打印类的详细信息就要在Person类中重写toString方法 @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("姓名:"+name+"\n"); sb.append("年级:"+gender+"\n"); sb.append(&

java对象重写toString方法

java Object的toString方法定义是 [email protected],然而对于对象,很多时候这玩意并没有什么卵用,现在比较常用的需求是将对象转为json字符串,只需在对象中做如下修改即可: import com.alibaba.fastjson.JSON; @Override public String toString() { return JSON.toJSONString(this); }

JavaSE8基础 直接输出对象的名称与对象的toString方法的结果是相同的

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        code: package jizuiku.eleven302; public class Demo { public static void main(String[] args) { Demo d = new Demo(); System.out.println(d); System.out.println(d.

当使用System,out.println()打印一个对象是自动调用toString方法

在Java中,所有的对象都是继承自Object,自然继承了toString方法,在当使用System,out.println()里面为一个对象的引用时,自动调用toString方法讲对象打印出来.如果重写了tostring方法则调用重写的toString 方法. 因为System.out.println()的这个方法源码中调用了String.valueOf(Objec o),public void println(Object x) {        String s = String.valu

为何重写toString方法后会使哈希码能够打印出来

首先还是推荐lz看源代码 简单的讲之所以调用了toString()方法,不是什么编译器默认的,而是因为lz你调用的是out.print()方法仔细看源代码,在PringStream类中,print方法是这样写的 public void print(Object obj) { write(String.valueOf(obj)); }此时调用了String的静态方法valueof这个方法是这样的 public static String valueOf(Object obj) { return (

为什么toString方法可以用来区分数组和对象?

首先大家都应该知道在javascript中只有是对象都存在toString方法,将调用该方法的值转换为字符串返回,如下: var arr = [1, 2, 3]; console.log(arr.toString()); //1,2,3 但对象的toString方法和其他优点不同,其返回的是类似 '[object class]'的字符串 一.在js中,要想判断一个某个对象是属于哪种内置类型,最靠谱的方法就是通过Object.prototype.toString()方法 var arr = [1,