java中的return關鍵字使用解讀
return的作用
a.返回方法的返回值(運行結果)
具體表現(xiàn): 返回不被void關鍵字修飾的方法的返回值
語法: return 返回值;
注意:返回值類型需要與方法名前面的數(shù)據(jù)類型保持一致
示例代碼如下:
import java.util.Scanner;
public class Practice {
public static void main(String[] args) {
int year=2020;
if(isLeapYear(year)){
System.out.println(year+"是閏年");
}else{
System.out.println(year+"是平年");
}
}
//在isLeapYear是返回實參傳過來的年是否是閏年的結果,若是,則返回true,否則返回false
public static boolean isLeapYear(int year){
if(year%400==0||(year%4==0&&year%100!=0)){
return true;
}
return false;
}
}示例代碼截圖如下所示:

b.結束當前方法
語法為: return;
必須要在方法體里頭書寫才會生效
示例代碼如下所示:
public class Practice {
public static void main(String[] args) {
//當輸入第10句堅持就是勝利時,就結束這個程序
// 此時我們可以在main方法里面使用return關鍵字
int i=0;
while(true){
System.out.println("堅持就是勝利"+(++i));
if(i==10){
System.out.println("此時程序結束!!!");
return;
}
}
}
}示例代碼截圖如下所示

return關鍵字常見問題
編譯器如何判定非void修飾的方法的返回值是否合理???
1.核心判斷依據(jù)
任意情況下該方法都有返回值,
2.例如如下所示代碼
是會運行成功,還是會報錯呢?
public class Practice {
public static void main(String[] args) {
System.out.println(test());
}
public static int test(){
boolean flag=true;
if(flag){
return 1;
}
}
}解答:在idea中編譯通過不了,提示Missing return statement(沒有返回語句)
原因如下:
- 編譯器不知道flag的值,也就是說if語句在編譯器眼中是可能運行也可能不運行
- 也就是說可能會有返回值,可能也沒有返回值。
- 因此不符合任何條件下都有返回值這個要求,因此就會提示沒有返回語句
3.那么如何解決這個問題呢?
3.1 第一種,{}里面(循環(huán)、分支啥的)的內(nèi)容用變量去進行接收,然后返回變量的值
語法
public static 變量數(shù)據(jù)類型 test(){
變量數(shù)據(jù)類型 變量名=默認值;
boolean flag=true;
if(flag){
變量名=特定值;
}
return 變量名;
}對之前的錯誤代碼進行改進的結果如下所示:
public class Practice {
public static void main(String[] args) {
System.out.println(test());
}
public static int test(){
int result=55;
//定義一個變量來接收返回的結果
boolean flag=true;
if(flag){
result=100;
}
return result;
}
}3.2 第二種,{}里面和外面都有返回值
public static 變量數(shù)據(jù)類型 test(){
boolean flag=true;
if(flag){
return 數(shù)值1;
}
return 數(shù)值2;
//數(shù)值1和數(shù)值2的數(shù)據(jù)類型應與變量數(shù)據(jù)類型保持一致
}對之前的錯誤代碼進行改進的結果如下所示:
public class Practice {
public static void main(String[] args) {
System.out.println(test());
}
public static int test(){
//if里面外面均有返回值,此時編譯器就不用擔心有可能無返回值的情況了
boolean flag=true;
if(flag){
return 100;
}
return 55;
}
}return后面是否可以寫其他語句???
分析
當return的作用為返回方法的運行結果時
以下代碼是否會報錯?
public class Practice {
public static void main(String[] args) {
System.out.println(test());
}
public static int test(){
return 66;
System.out.println("查看是否報錯");
}
}
//此題會報錯答:
會報錯,因為按照正常來說當return所在語句運行完成后,意味著該次方法調(diào)用語句完成,而return后面的語句壓根就沒有執(zhí)行的可能。
因此在編譯器編譯的過程中,會報錯,報錯提示你應該把不可訪問(多余)的語句給去掉。
當return的作用為結束當前方法時
以下代碼是否會報錯
public class Practice {
public static void main(String[] args) {
System.out.println("專注能有效提高做事效率!!!");
return;
System.out.println("科學表明");
}
}答:
會報錯,因為按照正常來說使用return關鍵字結束當前方法后,意味著該方法(緊鄰著的)后面的語句不可能有機會去運行,因此編譯器會給出錯誤提示Unreachable statement(不可訪問的語句),因此此時return后面也不能寫其他語句。
總結
無論是返回方法的運行結果還是結束當前方法,后面均不可以寫其他語句
return所在語句后面不可以寫其他語句。(其他語句和return在同一個{}里面的情況)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
如何通過自定義spring?invalidator注解校驗數(shù)據(jù)合法性
這篇文章主要介紹了如何通過自定義spring?invalidator注解校驗數(shù)據(jù)合法性,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07
基于SpringBoot實現(xiàn)自動裝配返回屬性的設計思路
這篇文章主要介紹了基于SpringBoot實現(xiàn)自動裝配返回屬性,這里涉及到的技術知識點有注解解析器,為什么用ResponseBodyAdvice這里解析?不在Filter,Interceptors,本文結合示例代碼給大家介紹的非常詳細,需要的朋友參考下吧2022-03-03
解決Nacos成功啟動但是無法訪問 (Connection refused)
這篇文章主要介紹了解決Nacos成功啟動但是無法訪問 (Connection refused)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06

