[英]Terminating a Java Program
我找到了終止(關閉或停止)我的 Java 程序的方法。 我找到了兩個解決方案。
使用回報;
當我想退出或終止我的程序執行時,我添加了這個。
使用System.exit() ;
有時我使用它。 我從這個問題中讀到了System.exit() 。
所以,我對他們兩個都有一些了解。 但我仍然對它們的實際工作方式感到困惑。 請檢查以下代碼...
public class Testing {
public static void main(String... str) {
System.out.println(1);
System.exit(0);
System.out.println(2);
return;
}
}
我相信2不會出現。 我想知道是為什么return;
或者其他代碼可以寫在System.exit(0);
的語句下面System.exit(0);
什么是return;
真正定義return;
(因為對我來說return
沒有任何變量或值很奇怪)?
調用System.exit(0)
(或任何其他與此相關的值)會導致 Java 虛擬機退出,終止當前進程。 你傳遞的參數將是java
進程返回給操作系統的返回值。 您可以從程序中的任何位置進行此調用 - 結果將始終相同 - JVM 終止。 由於這只是調用System
類中的靜態方法,編譯器不知道它將做什么 - 因此不會抱怨無法訪問的代碼。
return
語句只是中止當前方法的執行。 它的字面意思是將控制權返回給調用方法。 如果該方法聲明為void
(如您的示例中所示),則您不需要指定值,因為您需要返回void
。 如果該方法聲明為返回特定類型,則您必須指定要返回的值 - 該值必須屬於指定類型。
僅當程序位於正在執行的主類的main
方法內時, return
才會導致程序退出。 如果您嘗試在其后放置代碼,編譯器會抱怨無法訪問的代碼,例如:
public static void main(String... str) {
System.out.println(1);
return;
System.out.println(2);
System.exit(0);
}
不會使用大多數編譯器進行編譯 - 產生指向第二個System.out.println
調用的unreachable code
錯誤。
因為System.exit()
只是編譯器的另一種方法。 它不會提前閱讀並確定整個程序將在那時退出(JVM 退出)。 您的操作系統或外殼程序可以讀取在System.exit()
方法中傳回的整數。 0
表示“程序退出並且一切正常”和任何其他值來通知發生錯誤是標准的。 由開發人員為任何用戶記錄這些返回值。
另一方面, return
是編譯器非常熟悉的保留關鍵字。 return
返回一個值並結束當前函數的運行,將堆棧向上移動到調用它的函數(如果有)。 在您上面的代碼中,它返回void
因為您沒有提供任何要返回的內容。
System.exit() 終止 JVM。 System.exit() 執行后沒有任何內容。 Return 通常用於退出方法。 如果返回類型為 void,則可以使用 return; 但我認為在 main 方法中這樣做不是一個好習慣。 您不必為終止程序做任何事情,除非無限循環或其他一些奇怪的執行流程。
所以返回; 並沒有真正終止您的 java 程序,它只是終止您的 java 函數 (void) 。 因為在您的情況下,該功能是您應用程序的主要功能,請返回; 也會終止申請。 但回報; 在您的示例中是無用的,因為無論如何該函數將在返回后直接終止......
System.exit() 將完全終止您的程序並關閉所有打開的窗口。
return;
用於void返回類型的方法中,將執行的控制權返回給其父方法。返回什么; 意思?
return;
真的意味着它不返回void
。 就是這樣。
為什么回來; 或者其他代碼可以寫在System.exit(0)的語句下面;
這是允許的,因為編譯器不知道調用System.exit(0)
將終止JVM
。 編譯器只會給出警告 -不必要的 return 語句
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.