Java 中 System.out.println() 和 return 的区别

Posted

技术标签:

【中文标题】Java 中 System.out.println() 和 return 的区别【英文标题】:Differences between System.out.println() and return in Java 【发布时间】:2014-10-16 20:46:55 【问题描述】:

我试图了解在方法中使用 System.out.println()return blah 的区别和好处。

貌似System.out.println()是用来显示静态信息的,return是方法返回的值。然而,我看到了像下面这样的示例,其中在 System.out.println() 语句中使用了一个函数

System.out.println(name.substring(1, 3));

什么时候可以使用System.out.println()return。是不是return以后可以被另一段代码使用,而System.out.println()不能?

【问题讨论】:

您将土豆与太阳光束进行比较,紫色独角兽在巨石阵周围飞来飞去,等待流星带回恐龙。 如果可行,我会return blah。这意味着你可以用价值做你想做的事。 printlin() 是固定的,您可能并不总是想打印。 我想劝阻用户不要对这个问题投反对票。这可能看起来很愚蠢,但我以前教过 Java 初学者,对于这种知识水平,这实际上是一个很好的问题。 @ValekHalfHeart 虽然我没有对它投反对票,并且同意你认为这是一个写得很好的问题,但投反对票的工具提示说“这个问题没有显示任何研究工作 ,不清楚或没用。”。我认为它有点落入“没有显示任何研究成果”,因为谷歌搜索“java syso”和“java return”会很快回答这个问题。 @ValekHalfHeart 我读过它(顺便说一句,这是一个非常好的答案。+1 来自我)。但你是对的,随着时间的推移,事情似乎越来越微不足道,我们应该尊重它可能根本不是微不足道的。 【参考方案1】:

你的最后一句话实际上是正确的,但是这两个操作之间的区别是巨大的,所以我想更深入地解释它们的区别。

区别:

return 是控制程序执行流程的指令。它是 Java 语法的基本部分。它告诉计算机要执行代码的哪一部分,以及在执行期间要使用什么值。当你返回一个值时,你说的是“调用这个方法的结果是 XXXX”('XXXX' 是你返回的值)。

System.out.println 不用于控制程序的执行方式。它只是通知用户程序内部发生的事情的一种方式。 System.out.println(简称syso)可以将任何信息打印到控制台;不管它是变量、表达式还是方法调用的结果。 “静态”数据没有限制。

让我们看看它们的实际效果:

int addInts(int arg0, int arg1)

    return arg0 + arg1;

这意味着当我们在程序中调用addInts 时,它将计算其参数的总和。所以当我们写addInts(3, 7)时,就像在我们的源代码中简单地写3 + 710一样。没有任何东西打印到控制台;我们所做的只是为我们的程序提供了一种计算方式。

但是,如果我们所做的所有计算都位于计算机内部,那么我们可能进行的任何计算最终都是无用的,因此我们需要一种向用户显示这些信息的方法。输入系统:

System.out.println(addInts(22, 16));

addInts 方法被调用并返回 38。这个值被放置在计算机内存中的某个位置,以便我们的程序可以找到它。

接下来,syso 获取该值 (38) 并将其打印到控制台,让用户知道计算出的值。此过程不会计算任何新内容,我们的程序继续执行下一条语句。

那我用哪个?

在简单的程序中,您需要跟踪的值非常少,因此很容易只打印所有您想知道的计算位置。例如,如果你正在编写一个程序来完成你的代数作业(我去过那里),并且你编写了一个求解二次方程的方法,那么将它构造成这样可能很诱人:

class Algebra

    static void quadSolve(double a, double b, double c)
    
        double result = /* do math...  we're ignoring the negative result here*/;

        System.out.println("The solution to the quadratic equation is: " + result);
    

    public static void main(String[] args)
    
        quadSolve(1.0, -6.0, 9.0);
    

但是,如果您想让您的程序稍微复杂一点,这种方法很快就会成为一个非常糟糕的主意。假设一个问题需要您求解二次方程,然后使用该计算的结果来计算圆柱体的体积。在上面的例子中,我们不能这样做:当我们通过 syso 将result 的值转储到控制台后,当quadSolve 方法结束时它就消失了。如果我们让quadSolve 返回result 并让“调用者”(调用quadSolve 的地方)处理该值,那将更有意义。这是一种更加灵活的设计,使我们能够相对轻松地使我们的程序更加复杂。这种增加的灵活性和模块化确实使方法变得有用。这是实现:

class Algebra

    static double quadSolve(double a, double b, double c)
    
        double result = /* do math...  we're ignoring the negative result here*/;

        return result;
    

    public static void main(String[] args)
    
        double x = quadSolve(1.0, -6.0, 9.0);
        //now we can do whatever we want with result: 
        //print it, negate it, pass it to another method-- whatever.
        System.out.println("The solution to the quadratic equation is: " + x);
        System.out.println("And it's square is: " + (x * x));
    

我希望这可以解决问题。如果您需要进一步说明,请随时询问。

【讨论】:

除非发生错误,否则对程序的执行方式没有任何影响”,好吧,可以在其中放置一个方法调用和赋值,这可能会改变程序的方式执行;)无论如何,这是一个了不起的答案,+1 感谢您的详尽解释,绝对让事情变得清晰,并解释了为什么 return 允许代码更加通用。【参考方案2】:

method 通常返回value(这是通过使用return 语句完成的)。

信息可以通过System.out.println() 引用“打印”到输出流。

它们都有各自的用途......通常是正交的。

【讨论】:

【参考方案3】:

他们之间几乎没有什么关系。


System.out.println() 用于将字符串输出到控制台/终端。所以

System.out.println("Hello world");

应该输出字符串"Hello world"


return 是 Java 中的一条语句,用于返回调用该方法的代码并传回一个值。

public static int add(int a, int b) 
    return a + b;  // go back to method that called this method (main)


public static void main(String[] args) 
    int sum = add(3,4);  // the return result (7) is stored in sum

【讨论】:

但是你省略了vs的解释=\【参考方案4】:

根据我的理解,并给出一个具有重要意义的简单答案,我会说:

这就像你去咖啡店点一杯咖啡,但咖啡师会告诉你是想要咖啡杯的照片还是杯子本身:)。

System.out.println() 是图片,而.. return blah 是那杯咖啡。

使用“return”,您可以使用 return 的值做您喜欢的事情,但使用“print”,您只能看到函数在做什么。

【讨论】:

以上是关于Java 中 System.out.println() 和 return 的区别的主要内容,如果未能解决你的问题,请参考以下文章

java中System.out.print()与System.out.println()与System.out.printf()的差别

JAVA中System.out.println和System.out.print有什么区别

java中的system.out.println()和JSP中out.println()差别

java中System.out.println中的out是啥,是一个类???

Java 中 System.out.println() 的字符限制

java中system.out.println()是什么意思