System.out.println()与Java返回之间的差异

Obi*_*obi 9 java return return-value system.out

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

它似乎System.out.println()用于显示静态信息,并且return是从该方法返回的值.然而,我正在看下面的例子,其中一个函数在System.out.println()语句中使用

System.out.println(name.substring(1, 3));
Run Code Online (Sandbox Code Playgroud)

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

App*_*ish 21

你的最后一句话是有效的,但这两项操作之间的区别是巨大的,所以我想更深入地解释它们之间的差异.

区别:

return是一个控制程序执行流程的指令.它是Java语法的基础部分.它告诉计算机要执行的代码部分,以及执行期间要使用的值.当您返回一个值时,您说"调用此方法的结果是XXXX"("XXXX"是您返回的值).

System.out.println不用于控制程序的执行方式.这是告知用户程序内部情况的唯一方法.System.out.println(简称syso)可以将任何信息打印到控制台; 它是变量,表达式还是方法调用的结果并不重要."静态"数据没有限制.

让我们看看他们两个在行动:

int addInts(int arg0, int arg1)
{
    return arg0 + arg1;
}
Run Code Online (Sandbox Code Playgroud)

这意味着我们addInts在程序中调用它,它将评估其参数的总和.因此,当我们编写时addInts(3, 7),它与简单编写3 + 710在我们的源代码中一样.没有任何东西打印到控制台; 我们所做的就是给我们的程序一个计算某事的方法.

但是,如果他们只是坐在计算机内,我们可能做出的任何计算最终都是无用的,所以我们需要一种方法来向用户显示这些信息.输入syso:

System.out.println(addInts(22, 16));
Run Code Online (Sandbox Code Playgroud)

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果您想让程序更复杂一点,这种方法很快就会成为一个非常糟糕的主意.假设有一个问题需要您求解二次方程,然后使用该计算的结果来计算圆柱体积.在上面的例子中,我们不能这样做:在我们result通过syso 将值转储到控制台之后,它会在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));
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望这能解决问题.随意询问您是否需要进一步澄清.


Ers*_*III 6

A method经常返回一个value(通过使用该return语句完成).

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

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