return關鍵字
程序執行到方法裏面的return語句時,方法就會返回,return下面的語句不會被執行。
例:
public class MethodTest{
public static void main(String[] args){
//不接收返回值也行,符合語法規則,編譯可以通過。
sumInt(10,20);
//對於有返回值的方法,通常都會定義變量用來接收方法的返回值
int result = sumInt(10,20);
System.out.println("計算結果是:"+result);
}
public static int sumInt(int a,int b){
int c = a + b;
return c; //程序執行到此處sumInt方法執行結束。並將int類型的值c返回
}
public static int test1(){
return 1; //這行代碼只要執行,整個方法就結束了。
//System.out.println("hello"); //這裏的代碼是無法執行的,編譯報錯。
}
public static void test2(){
return; //可以,return後面沒有返回任何數據
}
/*
public static int test3(){
return; //錯誤
}
*/
}
如果方法有返回值,那麼要在其方法裏面設置返回值。
例:
public class MethodTest{
/*
* 編譯階段不會運行代碼,編譯器並不知道flag的值,它只知道flag要麼是true,要麼是false。
* 對於test1方法,編譯器會考慮到當flag爲false的時候,該方法就沒有返回值了,所以在編譯階段會報錯
*
*/
/*public static int test1() {
boolean flag = true;
if (flag) {
return 1;
}
}*/
//以下程序還是編譯報錯,因爲編譯器就認爲以下的這個if語句的大括號當中的代碼可能執行,也可能不執行。
/*
public static int test2(){
if(true){
return 1;
}
}
*/
//if結合else使用,這樣要麼執行if中的語句,要麼執行else中的語句。
//此時編譯器可以判定這個程序return 語句一定會執行的
public static int test3(boolean flag) {
/*
* 下面這種寫法會報錯,需要在else裏面設置返回值
*/
/*if (flag) {
return 0;
} else {
System.out.println("1");
}*/
if (flag) {
return 0;
} else {
return 1;
}
}
//下面程序會報錯嗎?
//不會報錯,因爲這樣編寫可以保證一定會有一個return語句執行
public static int test4(){
boolean flag = false;
if(flag){
return 1;
}
return 0;
}
}
break,continue和return的區別
break; 和 continue; 這兩個語句主要是用來控制循環的,跟方法沒有關係。
return; 和以上的兩個語句不是一個級別的,return;是用來終止當前方法的。
public class Test {
public static void main(String[] args){
test();
System.out.println("hello world!");
}
public static void test() {
for( int i = 0 ; i < 10 ; i ++ ){
if( i == 5 ){
//break;
//continue;
return; //終止當前方法的執行。(不是終止JVM的執行)
}
System.out.println("i = " + i);
}
}
}