Java笔记1 - System.out.println(this)

本文介绍了Java中使用System.out.println(this)打印对象时,实际上是调用了对象的toString()方法。如果重写了toString方法,将打印自定义内容;否则,将默认打印Object类的toString方法,返回类名@hashCode的形式。
部署运行你感兴趣的模型镜像

    在Java中,所有的对象都是继承自Object,自然继承了 toString 方法,在当使用 System.out.println() 方法,里面为一个对象的引用时,自动调用 toString 方法将对象打印出来,而如果重写了 tostring 方法则调用重写的toString方法。

    因为 System.out.println() 的这个方法源码中调用了 String.valueOf(Objec o)

public void println(Object x) {
   String s = String.valueOf(x);
   synchronized(this) {
       print(s);
       newLine();
   }
}

  而 String.valueOf(x) 的源码就是去调用该对象的 toString() 方法,源码如下:

public static String valueOf(Object obj) {
        return (obj ==null) ? "null" : obj.toString();
    }


 对于 System.out.println(this)

this是这个类的引用,  比如说

class  A{
    public void run(){ 
        System.out.println(this);
    }
     
    public String toString() {
        return "hello";
    }
}


 那么 System.out.println(this) 将打印A类自身引用的toString方法,如列,打印hello   如果自身没有实现,则打印的是父类ObjecttoString方法;getClass().getName() + "@" +Integer.toHexString(hashCode());  打印的是类名@hascode”







  

您可能感兴趣的与本文相关的镜像

Kotaemon

Kotaemon

AI应用

Kotaemon 是由Cinnamon 开发的开源项目,是一个RAG UI页面,主要面向DocQA的终端用户和构建自己RAG pipeline

1.请根据下面的 Java 代码画出类图。 Protection.java 文件如下: package p1; public class Protection { int n = 1; private int n_pri = 2; protected int n_pro = 3; public int n_pub = 4; public Protection() { System.out.println("base constructor"); System.out.println("n = " + n); System.out.println("n_pri = " + n_pri); System.out.println("n_pro = " + n_pro); System.out.println("n_pub = " + n_pub); } } Derived.java 文件如下: package p1; class Derived extends Protection { Derived() { System.out.println("derived constructor"); System.out.println("n = " + n); System.out.println("n_pro = " + n_pro); System.out.println("n_pub = " + n_pub); } } SamePackage.java 文件如下: package p1; class SamePackage { SamePackage() { Protection p = new Protection(); System.out.println("same package constructor"); System.out.println("n = " + p.n); System.out.println("n_pro = " + p.n_pro); System.out.println("n_pub = " + p.n_pub); } } 2.设计类图: 一家公司决定通过一个“电子办公桌 electronic desks”网络,实现文档在它的各个办公室间的传递,每个办公桌提供下列服务:记事簿 blotting pad,能够保存用户当前处理的文档。提供基本的字处理设施;文件柜 filing cabinet,模拟现实的文件柜。分成多个抽屉,每个抽屉分为多个文件夹。文档可以存储在抽屉中,或者存储在抽屉的文件夹中;邮件服务 mail service,允许用户和网络上的其他用户通信。每个办公桌配有三个托盘 tray,对应于传统办公室中的 IN(收)、OUT(发)和 PENDING(未决)文件盘。网络会自动将新邮件放入 IN 托盘,并定时从 OUT 托盘取走文档邮寄给接收者;文档可以在邮件托盘和记事簿之间,记事簿和文件柜之间移动,但不能直接在托盘和文件柜之间移动。在任何时间记事簿上只能有一个文档。 要求:生".vsdx"文件,类使用中文。
最新发布
04-03
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值