Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对象将如何隐式调用toString方法?_Java - Fatal编程技术网

Java 对象将如何隐式调用toString方法?

Java 对象将如何隐式调用toString方法?,java,Java,如果我正在打印类的对象,那么它正在打印toString()方法实现,即使我没有编写toString()方法,那么实现是什么,它是如何在内部调用toString(),因此,如果尚未定义on对象,将调用on对象。您没有显式调用toString(),但隐式调用的是: 见: 是一个类,具有类型为的静态字段。因此,您正在调用PrintStream的方法 它是这样实现的: public void println(Object x) { String s = String.valueOf(

如果我正在打印类的对象,那么它正在打印
toString()
方法实现,即使我没有编写
toString()
方法,那么实现是什么,它是如何在内部调用
toString()
,因此,如果尚未定义on对象,将调用on对象。

您没有显式调用
toString()
,但隐式调用的是:

见:

是一个类,具有类型为的
静态
字段。因此,您正在调用
PrintStream
的方法

它是这样实现的:

   public void println(Object x) {
       String s = String.valueOf(x);
       synchronized (this) {
           print(s);
           newLine();
       }
   }
正如我们看到的,它正在调用方法。
具体实施如下:

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

在这里您可以看到,这就是所谓的。

Java中的每个对象都是-A(n)
对象
。因此,如果类未提供
toString()
实现,则会自动调用默认的
对象.toString()

Object.toString()
默认实现只是打印对象的类名,后跟对象的哈希代码,这不是很有帮助。因此,通常应该重写
toString()
,以提供对象运行时状态的更有意义的字符串表示

即使我没有编写toString()方法,那么实现是什么,它是如何在内部调用toString()的呢

toString()
是为数不多的方法之一(如
equals()
hashCode()
等),在某些编程情况下,如(仅命名一些)隐式调用

  • 使用
    println()打印对象
  • 打印对象的集合(
    toString()
    在所有元素上都被调用)
  • 与字符串串联(如
    strObj=“My obj as String is”+myObj;
对象类中存在toString()方法,因此当您将obj放入System.out.println(obj);,隐式地它将调用对象类中存在的toString(),因为每个用户创建的类都将隐式地继承对象类,从而成为您新创建的类,这意味着toString()在您的类中可用,因此它将打印类似于“PkgNamePackage”的内容。Classname@12cf4" 但是,如果您明确重写toString方法并给出自己的实现,那么它将编写您在重写的toString方法()中给出的字符串; 例:


在java中,对象类是每个类的超类。每当您将参数传递给system.out.println内部对象类到字符串方法时,就会执行。它返回类name@reference给定的值,但根据我们的应用程序要求,object class to string方法将在collection和string class.it中重写返回它们的内容。

打印
toString()
方法实现是什么意思?并键入:)。一个方法只有在我们显式调用它时才会被调用,但在这里,如果我们打印一个对象,toString()会被调用,这是怎么可能的?@marounnaroun你是说原语类型不是从对象类继承的?对象类是否有任何基元类型?@AsifMushtaq<代码>对象
类没有基元类型,但有包装器-查找
整数
双精度
。。
   public static String valueOf(Object obj) {
       return (obj == null) ? "null" : obj.toString();
   }
public class DogArray {
    @Override
    public String toString() {
        return "Im the newly created Object";
    }

    public static void main(String args[]) {
        DogArray d1 = new DogArray();
        System.out.println(d1);
    }
}

output: Im the newly created Object