Java中System.out.println()和return之间的差异
我试图理解在方法中使用Java中System.out.println()和return之间的差异,java,return,return-value,system.out,Java,Return,Return Value,System.out,我试图理解在方法中使用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.o
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()
不能使用?它们之间没有什么关系
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
}
方法
通常返回一个值
(通过使用return
语句完成)
信息可以通过System.out.println()
references“打印”到输出流
它们都有各自的用途。。。它们通常是正交的。您的最后一句话实际上是正确的,但这两个操作之间的区别是巨大的,因此我想对它们的区别进行更深入的解释 区别在于:
return
是控制程序执行流程的指令。它是Java语法的基本部分。它告诉计算机要执行代码的哪一部分,以及在执行过程中要使用哪些值。当您返回一个值时,您说的是“调用此方法的结果是XXXX”(其中“XXXX”是您返回的值)
System.out.println
不用于控制程序的执行方式。这只是告知用户程序内部正在发生的事情的一种方式System.out.println
(缩写为syso)可以将任何信息打印到控制台;不管它是变量、表达式还是方法调用的结果。对“静态”数据没有限制
让我们来看看这两种方法的实际效果:
int addInts(int arg0, int arg1)
{
return arg0 + arg1;
}
这意味着在我们的程序中调用加法器
,它将计算为其参数之和。因此,当我们编写附加项(3,7)
时,就好像我们在源代码中简单地编写了3+7
或10
。控制台上没有打印任何内容;我们所做的只是给我们的程序一种计算方法
然而,如果我们所做的只是坐在计算机内部,那么我们可能进行的任何计算最终都是无用的,因此我们需要一种向用户显示这些信息的方法。输入syso:
System.out.println(addInts(22, 16));
调用addents
方法并返回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));
}
}
我希望这能把事情弄清楚。请随意询问您是否需要进一步澄清。您正在将土豆与太阳光束进行比较,您正在巨石阵周围飞行紫色独角兽,等待流星带回恐龙。如果可行,我将返回blah。这意味着你可以用这个值做你想做的事情。printlin()是固定的,您可能并不总是想打印。我不鼓励用户对这个问题投否决票。这可能看起来很愚蠢,但我以前教过java初学者,就这一知识水平而言,这实际上是一个提出得很好的问题。@ValekHalfHeart虽然我没有否决它,并且同意你的观点,但否决的工具提示说“这个问题没有显示任何研究成果,它不清楚或没有用处。”。我觉得这有点像“没有显示任何研究成果”,因为谷歌搜索“java syso”和“java return”会很快回答这个问题。@ValekHalfHeart我读了它(顺便说一句,这是一个非常好的答案,我的+1)。但你是对的,随着时间的推移,事情似乎越来越琐碎,我们应该尊重这一点。但你忽略了vs解释=\“对程序的执行方式没有任何影响,除非发生错误”,那么,可以在其中放入方法调用和赋值,这可能会改变程序的执行方式;)不管怎么说,这是一个令人惊讶的答案,+1感谢您的透彻解释,明确地澄清了问题,并解释了为什么允许返回