Java 教程

Java 控制語句

面向物件程式設計

Java 內建類

Java 檔案處理

Java 錯誤與異常

Java 多執行緒

Java 同步

Java 網路程式設計

Java 集合

Java 介面

Java 資料結構

Java 集合演算法

高階 Java

Java 其他

Java API 與框架

Java 類參考

Java 有用資源

Java - REPL (JShell)



REPL (JShell) 簡介

REPL 代表 Read Evaluate Print Loop(讀取-求值-列印-迴圈)。JShell 是 Java 9 中引入的一個互動式控制檯。JShell 作為 REPL 允許在控制檯中執行任意 Java 程式碼片段,無需儲存和編譯 Java 程式碼檔案。此功能對於快速測試程式碼非常重要,例如評估正則表示式,檢查字串的格式,日期格式等。

JShell 讀取每一行輸入,對其進行求值,然後列印結果,然後再次準備好接收下一組輸入。

使用 JShell 的優勢

JShell 的此功能為開發人員提供了以下優勢:

  • 無需編輯器即可編寫 Java 程式。JShell 本身充當編輯器並執行 Java 程式碼。

  • 使用 JShell,無需儲存 Java 檔案、編譯和執行程式碼迴圈。程式碼可以直接在 JShell 中測試,無需儲存任何內容。

  • 無需在執行程式碼之前進行編譯。

  • 如果發生任何編譯時或執行時錯誤,請重新開始。

執行 JShell

開啟命令提示符並鍵入jshell

D:\test>jshell
|  Welcome to JShell -- Version 20.0.2
|  For an introduction type: /help intro

使用 JShell,我們還可以測試方法、類和表示式。在以下示例中,讓我們探索 JShell 的一些功能。

在 JShell 中建立和呼叫方法

以下程式碼片段顯示了 JShell 中的示例“Hello World”程式。在這裡,我們建立了一個 greet() 方法,該方法只有一個語句用於列印訊息“Hello World!”。接下來,我們呼叫了 greet() 方法,結果列印在控制檯上。

JShell 中的 Hello World 示例

jshell> void greet() { System.out.println("Hello World!");}
|  created method greet()

jshell> greet()
Hello World!
jshell>

在 JShell 中建立變數

以下程式碼片段顯示瞭如何在 JShell 中建立變數。分號是可選的。我們也可以在 JShell 中建立物件。如果未初始化變數,則如果它是物件引用,則賦予其預設值或 null。建立變數後,就可以使用它,如最後一條語句所示,我們使用字串變數列印其值。

示例

jshell> int i = 10
i ==> 10

jshell> String name = "Mahesh";
name ==> "Mahesh"

jshell> Date date = new Date()
date ==> Fri Feb 02 14:52:49 IST 2024

jshell> long l
l ==> 0

jshell> List list
list ==> null

jshell> name
name ==> "Mahesh"

在 JShell 中求值表示式

以下程式碼片段顯示瞭如何使用 JShell 求值表示式。在這裡,我們傳遞了一個返回格式化字串的語句。JShell 自動建立了一個 String 變數 $9 併為其賦值結果。在下一條語句中,我們進行了列印。

示例

jshell> String.format("%d pages read.", 10);
$9 ==> "10 pages read."

jshell> $9
$9 ==> "10 pages read."

JShell 內建命令

JShell 提供各種命令來列出建立的變數、建立的方法、使用的匯入等。一些重要的 JShell 命令是:

  • /drop – 此命令刪除由名稱、ID 或 ID 範圍標識的程式碼片段。
  • /edit – 此命令開啟一個編輯器。
  • /env – 此命令顯示環境設定。
  • /exit – 此命令退出工具。
  • /history – 此命令顯示工具的歷史記錄。
  • /help – 此命令顯示命令的幫助。
  • /imports – 此命令顯示當前活動的匯入。

示例:演示 /help 命令

我們可以使用/help選項檢視所有命令。

jshell> /help
|  Type a Java language expression, statement, or declaration.
|  Or type one of the following commands:
|  /list [<name or id>|-all|-start]
|       list the source you have typed
|  /edit <name or id>
|       edit a source entry
|  /drop <name or id>
|       delete a source entry
|  /save [-all|-history|-start] <file>
|       Save snippet source to a file
|  /open <file>
|       open a file as source input
|  /vars [<name or id>|-all|-start]
|       list the declared variables and their values
|  /methods [<name or id>|-all|-start]
|       list the declared methods and their signatures
|  /types [<name or id>|-all|-start]
|       list the type declarations

...

示例:演示 /vars 命令

在下面的示例中,我們使用了/vars命令來列印在會話期間宣告的變數。

C:\Users\Mahesh>jshell
|  Welcome to JShell -- Version 20.0.2
|  For an introduction type: /help intro

jshell> int i = 10
i ==> 10

jshell> String name="Mahesh"
name ==> "Mahesh"

jshell> /vars
|    int i = 10
|    String name = "Mahesh"

jshell>

示例:演示 /imports 命令

我們可以使用/imports命令檢查 JShell 中可用的匯入,如下所示

jshell> /imports
|    import java.io.*
|    import java.math.*
|    import java.net.*
|    import java.nio.file.*
|    import java.util.*
|    import java.util.concurrent.*
|    import java.util.function.*
|    import java.util.prefs.*
|    import java.util.regex.*
|    import java.util.stream.*

jshell>

退出 JShell

我們可以使用/exit命令退出 JShell,如下所示

示例

jshell> /exit
|  Goodbye

C:\Users\Mahesh>
廣告