public int max1020(int a, int b) {
// First make it so the bigger value is in a
if (b > a) {
int temp = a;
a = b;
b = temp;
}
// Knowing a is bigger, just check a first
if (a >= 10 && a <= 20) return a;
if (b >= 10 && b <= 20) return b;
return 0;
}
因此,如果a和b都在[10,20]范围内,它将返回a,并停止执行接下来的两行代码吗?
答案 0 :(得分:1)
因此,如果a和b都在[10,20]范围内,它将返回a,并停止执行接下来的两行代码吗?
它首先检查a,如果它与第一个条件匹配,则函数将返回a的值。函数返回后,将不执行下面两行代码。
程序返回内容后是否会停止执行?
否,该值不是由整个程序返回,而是由特定函数返回。让我举一个例子。
public class Main {
public static void main(String[] args) {
int result;
// The method max1020 returns the value of 'a' here
result = max1020(11,14);
System.out.println(result);
// The method max1020 returns the value of 'b' here
result = max1020(31,11);
System.out.println(result);
// The method max1020 returns the value of '0' here
result = max1020(50,60);
System.out.println(result);
}
private static int max1020(int a, int b) {
// First make it so the bigger value is in a
if (b > a) {
int temp = a;
a = b;
b = temp;
}
// Knowing a is bigger, just check a first
if (a >= 10 && a <= 20) return a;
if (b >= 10 && b <= 20) return b;
return 0;
}
}
return关键字只会使您脱离所使用的功能,而不会让您脱离整个程序。首次调用max1020()时,它将返回a。看到它返回a的值,但程序仍将执行其他行。它将打印变量结果的值,然后在另一对值上再次调用max1020()。
答案 1 :(得分:0)
如果a和b都在[10,20]范围内,它将始终返回a。 没错,一旦返回return语句,它将不再执行任何其他代码。
答案 2 :(得分:0)
假设程序检查a是否在范围内,并且假设求值结果为true,那么您将是正确的,它将把值保值返回给变量a。 在Java中,关键字 return 表示程序将返回与其关联的值并停止进一步执行。
关于您关于void方法的问题。在Java和许多其他语言中,您有一个称为“ state”的字眼,这意味着在当前执行范围之外还存在一些值,例如在伪代码中
int a = 0
public void inc (){
a++
}
Method inc不接受任何参数(其arity为0),但会递增在其自身函数范围之外定义的变量a。具有除void外的其他返回类型的任何方法都将返回定义的类型。
我希望我的回答会有所帮助。
答案 3 :(得分:0)
您似乎在混合方法返回和程序退出(也可以称为“ 程序返回代码”)。
在一种方法中,每当到达行return
时,该方法就在那里停止,并且将不执行进一步的指令。
当该方法是main
方法时,它也是程序的入口点。因此,当main
调用return
时,程序将有效停止,并返回代码0
(表示“成功”)。
在Java中,您还可以通过调用System.exit(ret)
来停止程序的执行。 在特定情况下,即使未显式调用return
,JVM进程(“您的程序”)也将停止执行进一步的指令(尽管有些IDE会给您错误或警告。返回代码(由调用方进程看到)将是您使用ret
指定的代码。