JDK9 學習之二 - Jshell(java 函數變成交互式 shell)

  1. Jshell介紹

誰說原生java不能函數式編成!java

JShell(JAVA Shell tool)是用來學習java語言和代碼設計的一個交互式工具。JShell是一個Read-Evaluate-Print Loop (REPL)閱讀-鍵入-打印-循環系統(函數式編成),他能夠進行代碼聲明、輸入語句、輸入表達式 而後直接顯示結果。 而後這是一個命令行工具。shell

  1. 爲何使用Jshell

使用Jshell 你能夠對程序過程當中任意對象隨時查看打印結果,並且能夠根據實際狀況當即做出調整。windows

寫一個java 程序通常涉及到下面幾個步驟:session

1. 寫一個完整的程序
2. 編譯&修改編譯錯誤
3. 運行程序
4. 看下哪裏錯了
5. 修改代碼
6. 而後循環1->5 直到所有OK

Jshell能夠實驗你的代碼還能夠探索性的開發你的程序。你能夠隨意編寫代碼,提煉出一個精良方法,也能夠在jshell session裏邊試用一些不熟悉的API。 Jshell固然不能替代IDE啦,可是你能夠先把代碼在jshell裏邊試驗成功之後(由於這樣就不用重複上面那個重複編譯的循環)而後就能夠粘貼到你的IDE裏邊去用了。oracle

  1. Jshell的啓動和中止

Jshell 包含在JDK9裏邊,因此必需要安裝JDK9。進入命令行(windows下是CMD),若是你沒有將$JAVA/bin 加入到系統PATH中,那麼你只能進入到$JAVA_HOME/bin 使用./jshell進行啓動了ide

  1. Jshell啓動兩種模式

  • 正常模式
% jshell
|  Welcome to JShell -- Version 9
|  For an introduction type: /help intro
#這裏已經進入jshell了。
jshell>
  • 詳情模式(-v)

詳情模式是方便你看到例子和教程同步,也就是能夠很方便獲得引導和錯誤反饋。當你已經很熟悉這個工具了,那你就能夠嘗試使用其餘正常的或者間接模式(其餘模式) 啓動詳情模式用 -v 選項:函數

% jshell -v
To exit JShell, enter /exit:

jshell> /exit
|  Goodbye
  1. 完整例子(功能演示)

leombp:~ Leo$ jshell -v
jshell> /help intro                 #查看系統大概的幫助
|  
|  intro
|  
|  使用 jshell 工具能夠執行 Java 代碼, 從而當即獲取結果。
|  您能夠輸入 Java 定義 (變量, 方法, 類, 等等), 例如:  int x = 8
|  或 Java 表達式, 例如:  x + x
|  或 Java 語句或導入。
|  這些小塊的 Java 代碼稱爲 '片斷'。
|  
|  這些 jshell 命令還可讓您瞭解和
|  控制您正在執行的操做, 例如:  /list
|  
|  有關命令的列表, 請執行: /help

jshell> test                        # 測試下詳細模式的錯誤日誌
|  錯誤:
|  找不到符號
|    符號:   變量 test
|    位置: 類 
|  test
|  ^--^

jshell> 1+1                         #能夠很方便進行數字簡單計算
$1 ==> 2
|  已建立暫存變量 $1 : int

jshell> int a=10                    #正常定義變量
a ==> 10
|  已建立 變量 a : int
        
jshell> String twice(String s){     #函數式定義方法
   ...> return s + s;
   ...> }
|  已建立 方法 twice(String)

jshell> twice(                      #調用方法,這裏相似Linux 按tab鍵能夠想IDE同樣進行提示。
twice(   

jshell> twice("I Love This Game. ")                #調用成功
$4 ==> "I Love This Game. I Love This Game. "
|  已建立暫存變量 $4 : String

jshell> $4                         #返回系統自動聲明一個變量$4
$4 ==> "I Love This Game. I Love This Game. "
|  $4 的值: String

jshell> int divide(int x,int y){   #定義一個方法進行異常測試
   ...> return x /y ;
   ...> }
|  已建立 方法 divide(int,int)

jshell> dived                      #按tab進行提示
jshell> divide(10,0)               #異常
|  java.lang.ArithmeticException thrown: / by zero
|        at divide (#6:2)
|        at (#7:1)

jshell> /list                      #查看用戶定義

   1 : 1+1
   2 : int a=10;
   3 : String twice(String s){
       return s + s;
       }
   4 : twice("I Love This Game. ")
   5 : $4
   6 : int divide(int x,int y){
       return x /y ;
       }
   7 : divide(10,0)

jshell> "str".                     #測試下tab對對象的自動提示
charAt(                chars()                codePointAt(           
codePointBefore(       codePointCount(        codePoints()           
compareTo(             compareToIgnoreCase(   concat(                
contains(              contentEquals(         endsWith(              
equals(                equalsIgnoreCase(      getBytes(              
getChars(              getClass()             hashCode()             
indexOf(               intern()               isEmpty()              
lastIndexOf(           length()               matches(               
notify()               notifyAll()            offsetByCodePoints(    
regionMatches(         replace(               replaceAll(            
replaceFirst(          split(                 startsWith(            
subSequence(           substring(             toCharArray()          
toLowerCase(           toString()             toUpperCase(           
trim()                 wait(                  


#測試自動導入
#Shift + Tab + i後出現意外的字符。
#Mac下是 `tab + i` 進行自動導入。
jshell> new JFrame
0: 不執行任何操做
1: import: javax.swing.JFrame
選項:                                    #我輸入了 1
Imported: javax.swing.JFrame

jshell> new JFrame

jshell> /exit                            #退出命令
|  再見

參考: Java Platform, Standard Edition Tools Reference工具

原:http://www.cockybook.com/?p=904oop

相關文章
相關標籤/搜索