您好,登錄后才能下訂單哦!
文章首發(fā)于公眾號(hào)《程序員果果》
地址 : https://mp.weixin.qq.com/s/saHBSTo4OjsIIqv_ixigjg
Java Shell工具是JDK1.9出現(xiàn)的工具, Java Shell工具(JShell)是一個(gè)用于學(xué)習(xí)Java編程語(yǔ)言和Java代碼原型的交互式工具。JShell是一個(gè)Read-Evaluate-Print循環(huán)(REPL),它在輸入時(shí)評(píng)估聲明,語(yǔ)句和表達(dá)式,并立即顯示結(jié)果。該工具從命令行運(yùn)行。
使用JShell,您可以一次輸入一個(gè)程序元素,立即查看結(jié)果,并根據(jù)需要進(jìn)行調(diào)整。
Java程序開(kāi)發(fā)通常涉及以下過(guò)程:
JShell可幫助您在開(kāi)發(fā)程序時(shí)嘗試代碼并輕松探索選項(xiàng)。您可以測(cè)試單個(gè)語(yǔ)句,嘗試不同的方法變體,并在JShell會(huì)話中試驗(yàn)不熟悉的API。JShell不替換IDE。在開(kāi)發(fā)程序時(shí),將代碼粘貼到JShell中進(jìn)行試用,然后將JShell中的工作代碼粘貼到程序編輯器或IDE中。
使用JShell需要配置好java的環(huán)境變量。
啟動(dòng):
jshell
要以詳細(xì)模式啟動(dòng)JShell,請(qǐng)使用以下-v選項(xiàng):
jshell -v
退出:
/exit
使用詳細(xì)選項(xiàng)啟動(dòng)JShell以獲得最大可用反饋量:
jshell -v
| 歡迎使用 JShell -- 版本 11.0.2
| 要大致了解該版本, 請(qǐng)鍵入: /help intro
在提示符處輸入以下示例語(yǔ)句,并查看顯示的輸出:
jshell> int x = 45
x ==> 45
| 已創(chuàng)建 變量 x : int
首先,顯示結(jié)果。將其讀作:變量x的值為45.因?yàn)槟幱谠敿?xì)模式,所以還會(huì)顯示所發(fā)生情況的描述。
注意:如果未輸入分號(hào),則會(huì)自動(dòng)將終止分號(hào)添加到完整代碼段的末尾。
當(dāng)輸入的表達(dá)式?jīng)]有命名變量時(shí),會(huì)創(chuàng)建一個(gè)臨時(shí)變量,以便稍后可以引用該值。以下示例顯示表達(dá)式和方法結(jié)果的臨時(shí)值。該示例還顯示了...> 在代碼段需要多行輸入完成時(shí)使用的continuation prompt():
jshell> String twice(String s) {
...> return s + s;
...> }
| 已創(chuàng)建 方法 twice(String)
jshell> twice("Oecan")
$4 ==> "OecanOecan"
| 已創(chuàng)建暫存變量 $4 : String
在試驗(yàn)代碼時(shí),您可能會(huì)發(fā)現(xiàn)變量,方法或類(lèi)的定義沒(méi)有按照您希望的方式執(zhí)行。通過(guò)輸入新的定義可以輕松更改定義,該定義將覆蓋先前的定義。
要更改變量,方法或類(lèi)的定義,只需輸入新定義即可。例如,twice在定義該方法嘗試片段得到在下面的示例中的新定義:
jshell> String twice(String s) {
...> return "Twice: " + s;
...> }
| 已修改 方法 twice(String)
| 更新已覆蓋 方法 twice(String)
jshell> twice("thing")
$6 ==> "Twice: thing"
| 已創(chuàng)建暫存變量 $6 : String
還可以改變變量的類(lèi)型定義。以下示例顯示x從String更改int為:
jshell> int x = 45
x ==> 45
| 已創(chuàng)建 變量 x : int
jshell> String x
x ==> null
| 已替換 變量 x : String
| 更新已覆蓋 變量 x : int
默認(rèn)情況下,JShell提供了一些常用包的導(dǎo)入,我們可以使用 import 語(yǔ)句導(dǎo)入必要的包或是從指定的路徑的包,來(lái)運(yùn)行我們的代碼片段。我們可以輸入以下命令列出所有導(dǎo)入的包:
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.*
當(dāng)我們想輸入System類(lèi)時(shí),根據(jù)前面說(shuō)的自動(dòng)補(bǔ)全,只需要輸入Sys然后按下 Tab 鍵,則自動(dòng)補(bǔ)全, 然后再輸入“.o”,則會(huì)自動(dòng)補(bǔ)全方法, 在補(bǔ)全“System.out.”后按下 Tab 鍵,接下來(lái)就會(huì)列出當(dāng)前類(lèi)的所有的 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)
現(xiàn)在,我想對(duì)twice方法做一些改動(dòng),如果這時(shí)有外部代碼編輯器的話,做起來(lái)會(huì)很容易。在 JShell 中可以啟用JShell Edit Pad 編輯器,需要輸入如下命令,來(lái)修改上面的方法:
代碼修改完成以后,先點(diǎn)擊“Accept”按鈕,再點(diǎn)擊“Exit”按鈕,則退出編輯器,在 JShell 命令行中提示方法已經(jīng)修改。
如果在外部已經(jīng)有寫(xiě)好的 Java 文件,可以使用/open 命令導(dǎo)入到 JShell 環(huán)境中,例如現(xiàn)在有一個(gè)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工具的更多使用方法,請(qǐng)參照官方示例:https://docs.oracle.com/javase/9/jshell/
歡迎關(guān)注我的公眾號(hào)《程序員果果》,關(guān)注有驚喜~~
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。