javascript
JShell 详解
文章目錄
- 一、簡介
- 二、為什么使用 JShell
- 三、參考示例
- 啟動 JShell
- 退出 JShell
- 聲明定義基本類型的變量
- 聲明定義一個方法
- 覆蓋已存在的變量、方法、類的定義
- 查看 JShell 默認導入的包
- 自動補全功能
- 列出所有鍵入的源
- 列出已聲明方法及其簽名
- 加載外部的源代碼
- 查看 JShell 提供的所有指令
- 將你輸入的歷史代碼片段保存到文件中
一、簡介
JShell(Java Shell)工具是 JDK1.9 出現的工具, JShell 是一個用于學習 Java 編程語言和 Java 代碼原型的交互式工具。JShell 是交互式 REPL(Read-Evaluate-Print Loop,讀取-求值-輸出 循環)工具。它在輸入時評估聲明,語句和表達式,并立即顯示結果。
可以在命令終端輸入下面的命令查看 JShell 簡介:
jshell> /help intro | | intro | | 使用 jshell 工具可以執行 Java 代碼, 從而立即獲取結果。 | 您可以輸入 Java 定義 (變量, 方法, 類, 等等), 例如: int x = 8 | 或 Java 表達式, 例如: x + x | 或 Java 語句或導入。 | 這些小塊的 Java 代碼稱為 '片段'。 | | 這些 jshell 命令還可以讓您了解和 | 控制您正在執行的操作, 例如: /list | | 有關命令的列表, 請執行: /help簡而言之,使用 JShell,你可以輸入代碼片段并馬上看到運行結果,然后就可以根據需要作出調整。
二、為什么使用 JShell
使用JShell,您可以一次輸入一個程序元素,立即查看結果,并根據需要進行調整。
Java程序開發通常涉及以下過程:
編寫程序代碼
編譯程序
修復編譯錯誤
編譯程序
運行程序
重復以上過程…
JShell 可幫助您在開發程序時嘗試代碼并輕松探索選項。您可以測試單個語句,嘗試不同的方法變體,并在 JShell 會話中試驗不熟悉的API。JShell 不替換 IDE。在開發程序時,將代碼粘貼到 JShell 中進行試用,然后將 JShell 中的工作代碼粘貼到程序編輯器或 IDE 中。
三、參考示例
啟動 JShell
liaowenxiongdeMacBook-Air:~ liaowenxiong$ jshell | 歡迎使用 JShell -- 版本 9.0.4 | 要大致了解該版本, 請鍵入: /help introjshell>退出 JShell
jshell> /exit | 再見聲明定義基本類型的變量
jshell> int x = 45 x ==> 45 | 已創建 變量 x : int聲明定義一個方法
jshell> String twice(String s) {...> return s + s;...> } | 已創建 方法 twice(String)jshell> twice("Oecan") $4 ==> "OecanOecan" | 已創建暫存變量 $4 : String注:直接調方法執行,沒有指定變量接收,JShell 會自動創建一個臨時變量接收返回值。
覆蓋已存在的變量、方法、類的定義
在試驗代碼時,您可能會發現變量,方法或類的定義沒有按照您希望的方式執行。通過輸入新的定義可以輕松更改定義,該定義將覆蓋先前的定義。
例如,重新定義 twice() 方法:
jshell> String twice(String s) {...> return "Twice: " + s;...> } | 已修改 方法 twice(String) | 更新已覆蓋 方法 twice(String)jshell> twice("thing") $6 ==> "Twice: thing" | 已創建暫存變量 $6 : String例如,重新定義變量:
jshell> int x = 45 x ==> 45 | 已創建 變量 x : intjshell> String x x ==> null | 已替換 變量 x : String | 更新已覆蓋 變量 x : int查看 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.*自動補全功能
當我們想輸入 System 類時,只需要輸入 Sys 然后按下 Tab 鍵,則自動補全, 然后再輸入“.o”,則會自動補全方法,在補全“System.out.”后再按下 Tab 鍵,就會列出當前類的所有的 public 方法:
jshell> System 簽名: java.lang.System<再次按 Tab 可查看文檔>jshell> System.out. append( checkError() close() equals( flush() format( getClass() hashCode() notify() notifyAll() print( printf( println( toString() wait( write(列出所有鍵入的源
列出到目前為止當前 session 里所有有效的代碼片段:
jshell> /list 2 : 2+24 : twice("Oecan")5 : String twice(String s) {return "Twice: " + s;}6 : twice("thing")8 : String x;列出已聲明方法及其簽名
jshell> /methods | String twice(String)加載外部的源代碼
如果在外部已經有寫好的 Java 文件,可以使用 /open 命令導入到 JShell 環境中,例如現在有一個Test.java 文件:
void say(String name) {System.out.println("hello " + name); }導入 JShell 進程中:
jshell> /open /Users/Documents/java11/Test.java jshell> /methods # 查看已經聲明定義的方法 | String twice(String) | void say(String)jshell> say("zhangsan") hello zhangsan查看 JShell 提供的所有指令
jshell> /help | 鍵入 Java 語言表達式, 語句或聲明。 | 或者鍵入以下命令之一: | /list [<名稱或 id>|-all|-start] | 列出您鍵入的源 | /edit <名稱或 id> | 編輯源條目 | /drop <名稱或 id> | 刪除源條目 | /save [-all|-history|-start] <文件> | 將片段源保存到文件 | /open <file> | 打開文件作為源輸入 | /vars [<名稱或 id>|-all|-start] | 列出已聲明變量及其值 | /methods [<名稱或 id>|-all|-start] | 列出已聲明方法及其簽名 | /types [<名稱或 id>|-all|-start] | 列出類型聲明 | /imports | 列出導入的項 | /exit [<integer-expression-snippet>] | 退出 jshell 工具 | /env [-class-path <路徑>] [-module-path <路徑>] [-add-modules <模塊>] ... | 查看或更改評估上下文 | /reset [-class-path <路徑>] [-module-path <路徑>] [-add-modules <模塊>]... | 重置 jshell 工具 | /reload [-restore] [-quiet] [-class-path <路徑>] [-module-path <路徑>]... | 重置和重放相關歷史記錄 -- 當前歷史記錄或上一個歷史記錄 (-restore) | /history | 您鍵入的內容的歷史記錄 | /help [<command>|<subject>] | 獲取有關使用 jshell 工具的信息 | /set editor|start|feedback|mode|prompt|truncation|format ... | 設置配置信息 | /? [<command>|<subject>] | 獲取有關使用 jshell 工具的信息 | /! | 重新運行上一個片段 -- 請參閱 /help rerun | /<id> | 按 ID 或 ID 范圍重新運行片段 -- 參見 /help rerun | /-<n> | 重新運行以前的第 n 個片段 -- 請參閱 /help rerun | | 有關詳細信息, 請鍵入 '/help', 后跟 | 命令或主題的名稱。 | 例如 '/help /list' 或 '/help intro'。主題: | | intro | jshell 工具的簡介 | id | 片段 ID 以及如何使用它們的說明 | shortcuts | 片段和命令輸入提示, 信息訪問以及 | 自動代碼生成的按鍵說明 | context | /env /reload 和 /reset 的評估上下文選項的說明 | rerun | 重新評估以前輸入片段的方法的說明將你輸入的歷史代碼片段保存到文件中
保存指令 /save 的語法格式:/save [-all|-history|-start] <文件>。
jshell> /save -history /users/liaowenxiong/desktop/jshell.txt總結
- 上一篇: 电脑壁纸怎么换如何换电脑桌面壁纸
- 下一篇: Spring JDBC的学习