Java 有人能解释一下下面程序中的toString()方法是如何工作的吗?

Java 有人能解释一下下面程序中的toString()方法是如何工作的吗?,java,Java,有人能解释一下下面程序中的toString()方法是如何工作的吗?在下面的程序中,我没有调用toString()方法。但是,当我创建一个对象时,消息是如何打印的,任何人都能解释我。我是java新手 class Inner { public String toString() { return "Hai this is java"; } } class Main { public static void main(

有人能解释一下下面程序中的toString()方法是如何工作的吗?在下面的程序中,我没有调用toString()方法。但是,当我创建一个对象时,消息是如何打印的,任何人都能解释我。我是java新手

class Inner
    {
       public String toString()
       {
         return "Hai this is java";
       }
    }

class Main
{
   public static void main(String [] java)
   {
      System.out.println(new Inner());
   }
}

print命令将始终打印作为参数传递的对象的toString方法返回的值


要么像以前那样重写它,然后返回,要么使用从对象类继承的默认实现。

System.out
返回一个
PrintStream
实例
PrintStream
有一个
public void println(Object x)
方法,该方法为传递给它的
对象调用
String.valueOf(x)
String.valueOf(x)
在向对象传递非空引用时调用对象的
toString()
方法。

此问题完全重复,您应该将其关闭。public void println(object x){String s=String.valueOf(x);synchronized(This){print(s);newLine();}//我知道它是如何工作的,但是为什么这里使用synchronized这里什么是synchronized(这个)?@CSiva你应该用谷歌搜索
synchronized
保留字。它用于同步对对象的访问。在这种情况下,对象是
PrintStream
实例。如果两个线程试图同时写入同一个
PrintStream
实例,则其中一个线程必须等待另一个线程完成。