Java 新特性:JShell

JShell 是在 JDK 9 正式發(fā)布的。它是類似于 Shell 的交互式編程環(huán)境,可以即時執(zhí)行 Java 代碼給出反饋。
快速反饋
在傳統(tǒng)的學(xué)習(xí) Java 時,對于一段入門代碼,我們需要相對復(fù)雜的流程。
編輯器輸入以下代碼:
class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, world!");
}
}
執(zhí)行以下編譯命令:
javac HelloWorld.java
運行:
java HelloWorld
對于后續(xù)的每次代碼改動,我們都要執(zhí)行上述的過程。
當(dāng)然,我們也可以把這個過程放到 IDE 中去做,也不過是 IDE 自動化了以上過程。
相對于 Shell 腳本、Python、Kotlin 這些語言,Java 一直以來缺少一種即時執(zhí)行、反饋的交互式編程環(huán)境。JShell 就是用來填補(bǔ)這一塊空白的。
終端執(zhí)行 jshell 進(jìn)入 JShell 后,就可以直接運行以下代碼,得到反饋:
jshell> System.out.println("Hello, world!");
Hello, world!
jshell>
JShell 加速了反饋,讓我們能夠快速的學(xué)習(xí)、驗證 Java 特性點。
除此之外,JShell 和 Java 有一些不太一致的地方需要注意。
重復(fù)聲明
在 JShell 中,我們可以多次重復(fù)聲明同一變量,也可以改變其類型。
jshell> String greeting = "Hola";
greeting ==> "Hola"
| modified variable greeting : String
| update overwrote variable greeting : String
jshell> Integer greeting;
greeting ==> null
| replaced variable greeting : Integer
| update overwrote variable greeting : String
這降低了我們在 JShell 中編碼的難度,不需要記住以前聲明過什么變量,方便了我們驗證少量代碼。
直接執(zhí)行表達(dá)式
JShell 中我們可以直接執(zhí)行表達(dá)式,方便了我們驗證表達(dá)式的工作。
jshell> 1 + 1
$1 ==> 2
| created scratch variable $1 : int
總結(jié)
總的來說,JShell 方便我們驗證一些簡單的語法特性和邏輯,有利于我們快速學(xué)習(xí)、驗證 Java 的語言特性。對于一些復(fù)雜的邏輯則不太適合,復(fù)雜的代碼邏輯還是交給 IDE 去做。
評論
圖片
表情
