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 + 7
或10
一样。没有任何东西打印到控制台;我们所做的只是为我们的程序提供了一种计算方式。
但是,如果我们所做的所有计算都位于计算机内部,那么我们可能进行的任何计算最终都是无用的,因此我们需要一种向用户显示这些信息的方法。输入系统:
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是啥,是一个类???