文章首發於公衆號《程序員果果》java
Java Shell工具是JDK1.9出現的工具, Java Shell工具(JShell)是一個用於學習Java編程語言和Java代碼原型的交互式工具。JShell是一個Read-Evaluate-Print循環(REPL),它在輸入時評估聲明,語句和表達式,並當即顯示結果。該工具從命令行運行。shell
使用JShell,您能夠一次輸入一個程序元素,當即查看結果,並根據須要進行調整。
Java程序開發一般涉及如下過程:編程
JShell可幫助您在開發程序時嘗試代碼並輕鬆探索選項。您能夠測試單個語句,嘗試不一樣的方法變體,並在JShell會話中試驗不熟悉的API。JShell不替換IDE。在開發程序時,將代碼粘貼到JShell中進行試用,而後將JShell中的工做代碼粘貼到程序編輯器或IDE中。微信
使用JShell須要配置好java的環境變量。session
啓動:oracle
jshell
要以詳細模式啓動JShell,請使用如下-v選項:app
jshell -v
退出:編程語言
/exit
使用詳細選項啓動JShell以得到最大可用反饋量:編輯器
jshell -v | 歡迎使用 JShell -- 版本 11.0.2 | 要大體瞭解該版本, 請鍵入: /help intro
在提示符處輸入如下示例語句,並查看顯示的輸出:
jshell> int x = 45 x ==> 45 | 已建立 變量 x : int
首先,顯示結果。將其讀做:變量x的值爲45.由於您處於詳細模式,因此還會顯示所發生狀況的描述。
注意:若是未輸入分號,則會自動將終止分號添加到完整代碼段的末尾。
當輸入的表達式沒有命名變量時,會建立一個臨時變量,以便稍後能夠引用該值。如下示例顯示錶達式和方法結果的臨時值。該示例還顯示了...> 在代碼段須要多行輸入完成時使用的continuation prompt():
jshell> String twice(String s) { ...> return s + s; ...> } | 已建立 方法 twice(String) jshell> twice("Oecan") $4 ==> "OecanOecan" | 已建立暫存變量 $4 : String
在試驗代碼時,您可能會發現變量,方法或類的定義沒有按照您但願的方式執行。經過輸入新的定義能夠輕鬆更改定義,該定義將覆蓋先前的定義。
要更改變量,方法或類的定義,只需輸入新定義便可。例如,twice在定義該方法嘗試片斷獲得在下面的示例中的新定義:
jshell> String twice(String s) { ...> return "Twice: " + s; ...> } | 已修改 方法 twice(String) | 更新已覆蓋 方法 twice(String) jshell> twice("thing") $6 ==> "Twice: thing" | 已建立暫存變量 $6 : String
還能夠改變變量的類型定義。如下示例顯示x從String更改int爲:
jshell> int x = 45 x ==> 45 | 已建立 變量 x : int jshell> String x x ==> null | 已替換 變量 x : String | 更新已覆蓋 變量 x : int
默認狀況下,JShell提供了一些經常使用包的導入,咱們可使用 import 語句導入必要的包或是從指定的路徑的包,來運行咱們的代碼片斷。咱們能夠輸入如下命令列出全部導入的包:
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(
jshell> /list 2 : 2+2 4 : twice("Oecan") 5 : String twice(String s) { return "Twice: " + s; } 6 : twice("thing") 8 : String x;
jshell> /methods | String twice(String)
如今,我想對twice方法作一些改動,若是這時有外部代碼編輯器的話,作起來會很容易。在 JShell 中能夠啓用JShell Edit Pad 編輯器,須要輸入以下命令,來修改上面的方法:
代碼修改完成之後,先點擊「Accept」按鈕,再點擊「Exit」按鈕,則退出編輯器,在 JShell 命令行中提示方法已經修改。
若是在外部已經有寫好的 Java 文件,可使用/open 命令導入到 JShell 環境中,例如如今有一個Test.java文件:
void say(String name) { System.out.println("hello " + name); }
jshell> /open /Users/Documents/java11/Test.java jshell> /methods | String twice(String) | void say(String) jshell> say("zhangsan") hello zhangsan
JShell工具的更多使用方法,請參照官方示例:https://docs.oracle.com/javase/9/jshell/
歡迎掃碼或微信搜索公衆號《程序員果果》關注我,更多精彩內容不能錯過 ~~
(轉載本站文章請註明做者和出處 程序員果果的博客)