国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java9特性預覽——Jshell

hikui / 1366人閱讀

摘要:什么是項目是第一個官方的的縮寫,即交互式編程環境,是一種命令行工具。它允許你無需編寫類或者方法來執行語句。它與的解釋器或其它本地支持的語言,如和類似。在即將到來的的特性中,這絕對是更有趣的特性之一。

什么是JShell?

JShell/Kulla項目是第一個官方的Java REPL (Read-Eval-Print-Loop的縮寫,即交互式編程環境),是一種命令行工具。它允許你無需編寫類或者方法來執行Java語句。它與Python的解釋器或其它本地支持REPL的JVM語言,如Scala和Groovy類似。在Java 9即將到來的的特性中,這絕對是更有趣的特性之一。

JShell的使用 命令行中直接使用

下載安裝OpenJDK9,然后我們就可以在安裝目錄的bin文件夾下看到 jshell.exe ,如果你配置好了環境變量,那么就可以在命令行中使用了。

我們來看下Jshell可以有什么設置選項:

/list:用于查看你之前輸入的語句的信息

/vars:用于查看你之前輸入的變量,如果你只是輸入了一個表達式,Jshell會將計算結果保存為一個變量

我們并沒有聲明$1變量,但是Jshell默認將表達式的結果轉為變量進行了存儲,所以我們可以直接使用改變量:

/save:存儲之前的輸入

我們執行:


會將文件存儲到你的用戶文件目錄下(你也可以指定完整的路徑)

我們來看看存儲的文件的內容:

1+1
1+1
2+2
$1
System.out.print($1)

其實就是簡單將你的輸入進行了保存

/reset:重置,會清楚你之前輸入的內容

/open:打開一個文件并執行其中內容

/methods:獲取聲明的或者使用到靜態方法

/types:顯示接口、類、枚舉等信息

/imports:獲取導入的包

上面的包都是默認導入的包這樣我們就能直接使用這些包中的類而無需自己聲明

/exit:退出Jshell

/reload:重置后重新加載之前的內容

/classpath :這個用于你使用自己聲明的類的時候可以將目錄添加到classpath進行引用 /history:查看之前所有輸入的命令

/retain editor|start|feedback|mode 用于保存配置信息方便 別的環境中/set editor|start|feedback|mode來獲得樣的配置 /id:重新執行某個id的操作

/-n:重新運行前面的第 n 個片段

在代碼中的使用

JDK9將Jshell相關API封裝為模塊(模塊相關知識可以查看 模塊化簡單教程)方便使用。下面我們通過代碼來學習一下相關的API:

package com.coderknock;
import java.io.ByteArrayInputStream;
import java.io.Console;
import java.util.List;
import jdk.jshell.*;
import jdk.jshell.Snippet.Status;
/**
 * 拿客
 * www.coderknock.com
 * QQ群:213732117
 * 創建時間:2016年06月29日
 * 描述:JShell
 */
public class JshellMain {
    public static void main(String[] args) {
         Console console = System.console();
         //創建一個Jshell環境,之后會自動進行關閉
         try (JShell js = JShell.create()) {
             //循環監聽輸出
             do {
                 System.out.print("請輸入一些Java代碼: ");
                 String input = console.readLine();
                 if (input == null) {
                     break;
                 }
                 //將輸入的指令轉化為SnippetEvent對象
                 List events = js.eval(input);
                 for (SnippetEvent e : events) {
                     StringBuilder sb = new StringBuilder();
                     if (e.causeSnippet() == null) {
                         //  我們有一個片段創建的事件
                         switch (e.status()) {//根據代碼片段的執行進行輸出
                             case VALID:
                                 sb.append("Successful ");
                                 break;
                             case RECOVERABLE_DEFINED:
                                 sb.append("With unresolved references ");
                                 break;
                             case RECOVERABLE_NOT_DEFINED:
                                 sb.append("Possibly reparable, failed  ");
                                 break;
                             case REJECTED:
                                 sb.append("Failed ");
                                 break;
                         }
                         if (e.previousStatus() == Status.NONEXISTENT) {
                             sb.append("addition");
                         } else {
                             sb.append("modification");
                         }
                         sb.append(" of ");
                         sb.append(e.snippet().source());
                         System.out.println(sb);
                         if (e.value() != null) {
                             System.out.printf("Value is: %s
", e.value());
                         }
                         System.out.flush();
                     }
                 }
             } while (true);
         }
         System.out.println("
Goodbye");
     }
}

進行編譯javac JshellMain.java -encoding UTF-8
運行結果:

當輸入錯誤的java代碼時:

執行for循環等:

我是廣告

本人的直播課程在 7 月份就要開始了,希望小伙伴們支持一下,現在報名有優惠噢

https://segmentfault.com/l/15...

https://segmentfault.com/l/15...

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/67217.html

相關文章

  • Java9的新特性

    摘要:新特性概述系列一安裝及使用系列二運行系列三模塊系統精要系列四更新系列五系列六系列七系列八系列九與的區別遷移注意事項參數遷移相關選項解析使用構建實例使用示例帶你提前了解中的新特性 Java語言特性系列 Java5的新特性 Java6的新特性 Java7的新特性 Java8的新特性 Java9的新特性 Java10的新特性 Java11的新特性 Java12的新特性 Java13的新特性...

    ddongjian0000 評論0 收藏0
  • Java 9 新特性

    摘要:在語言上并沒有添加太多的新特性,但在使用性能上做了很改進。二多版本包支持即在不同版本下,執行相應版本的代碼。在發布新版本的后,用戶可能不會升級到新環境,但是項目可能會開始逐步升級到新版本,來提前適應即將到來的環境。 Java9在語言上并沒有添加太多的新特性,但在使用、性能上做了很改進。 一、模塊間引用 Java9添加了模塊化的概念,使得之前的控制訪問權限有了改變。 之前: publ...

    SegmentFault 評論0 收藏0
  • java9系列(一)安裝及jshell使用

    摘要:序本文介紹下下面的版本安裝使用。下載官網地址安裝路徑下載襲來是個文件,雙擊安裝,默認裝到了這里,的地址是看下版本歡迎使用版本要大致了解該版本請鍵入有了就可以快速做一些驗證,比如查看導入的類庫方法定義及調用已創建方法已修改方法查看歷史 序 本文介紹下mac下面的java9版本安裝使用。 下載 官網地址http://www.oracle.com/technet... 安裝路徑 下載襲來是個...

    gaosboy 評論0 收藏0
  • java9系列(二)docker運行java9

    摘要:序本文介紹下如何在運行鏡像啟動然后就可以正常使用了,比如退出查看此鏡像的版本 序 本文介紹下如何在docker運行java9 鏡像 docker pull openjdk:9-jdk 啟動 docker run -it openjdk:9-jdk /bin/jshell 然后就可以正常使用jshell了,比如 Sep 22, 2017 2:16:12 AM java.util.pref...

    Integ 評論0 收藏0
  • 5分鐘學會Java9-Java11的七大新特性

    摘要:來來來,花分鐘看看的七大新特性,還有代碼樣例。本地是指方法內的變量聲明。從開始,這個正式進入標準庫包。同步請求會阻止當前線程。可喜的是,如果嘗試改變不可變集合,會通過發出警告是在中引入的,增加了三個新方法。 現在Java有多元化的發展趨勢,既有JS又有C++還有C#的影子,不學習那是不行滴。來來來,花5分鐘看看Java9-Java11的七大新特性,還有代碼樣例。Java11 發布了,然...

    xuhong 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<