Java 新特性:JShell

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