【问题标题】:Differences between System.out.println() and return in JavaJava中System.out.println()和return的区别
【发布时间】:2023-02-20 18:48:26
【问题描述】:

我试图了解在方法中使用 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)。但你是对的,随着时间的推移,事情似乎越来越微不足道,我们应该尊重它可能根本不是微不足道的。

标签: java return return-value system.out


【解决方案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
    }
    

    【讨论】:

    • 但是你省略了对比解释 =
    【解决方案4】:

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

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

    System.out.println() 是图片,而.. 返回 blah 是一杯咖啡。

    使用“return”你可以用返回的值做你想做的事,但是使用“print”你只能看到函数在做什么。

    【讨论】:

      猜你喜欢
      • 2014-10-16
      • 2018-12-04
      • 2015-10-30
      • 2013-06-02
      • 2014-03-24
      • 2011-03-10
      • 2014-05-01
      • 2014-05-24
      相关资源
      最近更新 更多