簡體   English   中英

終止 Java 程序

[英]Terminating a Java Program

我找到了終止(關閉或停止)我的 Java 程序的方法。 我找到了兩個解決方案。

  1. 使用回報;
    當我想退出或終止我的程序執行時,我添加了這個。

  2. 使用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錯誤。

  1. System.exit()是一種導致 JVM 退出的方法。
  2. return只是將控制權返回給調用函數。
  3. return 8將控制和值 8 返回給調用方法。

因為System.exit()只是編譯器的另一種方法。 它不會提前閱讀並確定整個程序將在那時退出(JVM 退出)。 您的操作系統或外殼程序可以讀取在System.exit()方法中傳回的整數。 0表示“程序退出並且一切正常”和任何其他值來通知發生錯誤是標准的。 由開發人員為任何用戶記錄這些返回值。

另一方面, return是編譯器非常熟悉的保留關鍵字。 return返回一個值並結束當前函數的運行,將堆棧向上移動到調用它的函數(如果有)。 在您上面的代碼中,它返回void因為您沒有提供任何要返回的內容。

System.exit() 終止 JVM。 System.exit() 執行后沒有任何內容。 Return 通常用於退出方法。 如果返回類型為 void,則可以使用 return; 但我認為在 main 方法中這樣做不是一個好習慣。 您不必為終止程序做任何事情,除非無限循環或其他一些奇怪的執行流程。

所以返回; 並沒有真正終止您的 java 程序它只是終止您的 java 函數 (void) 因為在您的情況下,該功能是您應用程序的主要功能,請返回; 也會終止申請。 但回報; 在您的示例中是無用的,因為無論如何該函數將在返回后直接終止......

System.exit() 將完全終止您的程序並關閉所有打開的窗口。

  • 好吧,首先 System.exit(0) 用於終止程序並且在它下面的語句是不正確的,盡管編譯器沒有拋出任何錯誤。
  • 簡單的return; 用於void返回類型的方法中,將執行的控制權返回給其父方法。

返回什么; 意思?

return; 真的意味着它不返回void 就是這樣。

為什么回來; 或者其他代碼可以寫在System.exit(0)的語句下面;

這是允許的,因為編譯器不知道調用System.exit(0)將終止JVM 編譯器只會給出警告 -不必要的 return 語句

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM