我试图理解使用系统的区别和好处。出来println()
vs.在方法中返回blah
。
似乎System.out.println()
用于显示静态信息,而返回
是从方法返回的值。然而,我看到了像下面这样的例子,其中函数在System.out.println()
语句中使用
System.out.println(name.substring(1, 3));
何时使用系统是正确的。出来println()
和返回。是不是
return
以后可以被另一段代码使用,而系统。出来println()
不能吗?
他们彼此关系不大。
系统。出来println()
用于将字符串输出到控制台/终端。所以
System.out.println("Hello world");
应输出字符串“Hello world”
返回是一个语句,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
是控制程序执行流程的指令。它是Java语法的基本部分。它告诉计算机要执行代码的哪一部分,以及在执行过程中要使用哪些值。当您返回一个值时,表示“调用此方法的结果是XXXX”(其中“XXXX”是您返回的值)。
系统。出来println
不用于控制程序的执行方式。这只是告知用户程序内部正在发生的事情的一种方式<代码>系统。出来println(简称syso)可以将任何信息打印到控制台;不管它是变量、表达式还是方法调用的结果。对“静态”数据没有限制。
让我们看看他们在行动中:
int addInts(int arg0, int arg1)
{
return arg0 + arg1;
}
这意味着在我们的程序中调用加法器
,它将计算为其参数之和。因此,当我们编写附加项(3,7)
时,就好像我们在源代码中只编写了37
或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));
}
}
我希望这能把事情弄清楚。请随时询问您是否需要进一步澄清。
基本上,我想知道哪种方法更适合练习, 或 或者还有我不知道的更好的方法吗?
本文向大家介绍数字和模拟系统之间的差异。,包括了数字和模拟系统之间的差异。的使用技巧和注意事项,需要的朋友参考一下 数字和模拟系统均用于将信号从一个地方传输到另一个地方,例如音频/视频。数字系统使用二进制格式(0和1),而模拟系统使用幅度变化的电子脉冲发送数据。 以下是数字系统和模拟系统之间的一些重要区别。 。 序号 键 数字系统 模拟系统 1个 信号类型 模拟系统使用大小变化的连续信号。 2 波
本文向大家介绍FAT32,exFAT和NTFS文件系统之间的差异。,包括了FAT32,exFAT和NTFS文件系统之间的差异。的使用技巧和注意事项,需要的朋友参考一下 操作系统的文件系统提供了一种组织文件和管理驱动器的方法。它指定如何以文件和文件夹的形式存储数据,并提供有关文件的元数据,例如名称,权限,大小和其他属性。FAT32,exFAT和NTFS是Windows操作系统使用的文件系统。FAT3
我需要为一个设计糟糕的旧应用程序编写JUnit测试,该应用程序正在向标准输出写入大量错误消息。当方法正确运行时,它将返回一个XML响应: 但当它得到格式错误的XML或不理解请求时,它会返回,并将一些内容写入标准输出。 在JUnit中是否有任何方法断言控制台输出?要捕获以下情况:
度量可以度量一些有用的领域,但是有什么区别和联系呢?
问题内容: 很快就有两个相等运算符:double equals( )和Triple equals( ),两者之间有什么区别? 问题答案: 简而言之: 操作员检查其实例值是否相等, 操作员检查引用是否指向同一实例, 长答案: 类是引用类型,可能有多个常量和变量在幕后引用类的同一单个实例。类引用保留在运行时堆栈(RTS)中,其实例保留在内存的堆区域中。当您控制平等时, 这意味着它们的实例是否彼此相等。