Java 当在print语句中写入方法签名时,输出是什么?

Java 当在print语句中写入方法签名时,输出是什么?,java,Java,好了,这太令人困惑了。我曾经记得当方法签名写在print语句中时,它只打印该方法的返回值,而不是按原样打印方法本身,它只打印返回值。我们不能在print语句中编写一个不返回任何值的方法 但是现在我看到它完全不同了,我确信当上面的不正确时,它会给出一个错误。但是现在,当我在print语句中编写方法时,不仅返回值,而且方法中打印的值也会被打印出来。。。这是怎么发生的?这是意料之中的。下面是一个例子: private String hello() { System.out.println("h

好了,这太令人困惑了。我曾经记得当方法签名写在print语句中时,它只打印该方法的返回值,而不是按原样打印方法本身,它只打印返回值。我们不能在print语句中编写一个不返回任何值的方法


但是现在我看到它完全不同了,我确信当上面的不正确时,它会给出一个错误。但是现在,当我在print语句中编写方法时,不仅返回值,而且方法中打印的值也会被打印出来。。。这是怎么发生的?

这是意料之中的。下面是一个例子:

private String hello() {
    System.out.println("hello");
    return "world";
}

System.out.println(hello());
那么执行这一行时会发生什么呢?您要求代码打印字符串类型的表达式hello。因此,它首先通过执行hello对表达式求值,然后将求值结果打印到System.out。首先执行hello

hello做的第一件事是将hello打印到System.out。这就是发生的事情。然后hello返回world,这个返回值被打印到System.out。所以最终的结果是

hello
world
正在印刷


这不是魔术,方法所做的不会改变它是否在print语句中被调用。如果执行了一个方法并将其写入System.out,那么不管调用它的方式如何,它都会写入System.out

请给我们看一些代码。