创建对象调用方法,为什么 void的方法有返回结果,string的方法没有返回结果

  package com;

  public class leetcode2 {

    public Integer id;

    public String name;

    @Override

    public String toString() {

        return "leetcode2 [id=" + id + ", name=" + name + "]";

    }

    public void abc() {

        System.out.println("leetcode2 [id=" + id + ", name=" + name + "]"); 

    }





    public static void main(String[] args) {

        leetcode2 lc = new leetcode2();

        lc.id = 1;

        lc.name = "James";

        lc.abc();

        lc.toString();

    }

}

所谓返回结果和输出是两回事
String result = lc.toString();
这个result才是返回的结果
但是你不能写
String result = lc.abc();,因为abc是void的
无论是void还是别的,都可以通过System.out.println向控制台输出,这个和返回结果无关。return语句才是返回。

你把返回结果的意思弄错了,当成是打印输出结果了
lc.abc();

lc.toString();
这两行代码等于调用对象Ic的方法abc()和toString()
abc()方法是void,所以无返回结果
这个方法做的事情是 System.out.println("leetcode2 [id=" + id + ", name=" + name + "]");
也就是打印输出字符串leetcode2 [id=" + id + ", name=" + name + "]
所以你会看到leetcode2 [id=" + id + ", name=" + name + "]
toString()方法是String,所以有返回结果
这个方法做的事情是return "leetcode2 [id=" + id + ", name=" + name + "]";
也就是返回字符串leetcode2 [id=" + id + ", name=" + name + "]
但是你并不能看到这行字符串,因为你没打印输出
你能不能看到这行字符串,和方法有没有返回结果无关
换一种说法,就是你把System.out.println的输出结果,当成是判断有没有返回结果的依据,这两者没有任何关系