JShellはJavaのREPL (Read-Eval-Print Loop)です.
式や文を与えると,そのつど評価してくれますし,間違っていればエラーを出力します.変数を宣言して,JShellのプロセスが終了するまで参照することもできます.
Webアプリケーションの演習授業で推奨環境として指定している,Eclipse Pleiades All in oneでもPaizaCloudでも,少しの操作で利用可能なので,今週の授業では,使い方と実行例を一部穴埋めにして出題し,解答してもらいました.
ここで気をつけることがあります(毎年,出題しています).「わ」がひらがなであることを確認するため,「Character.UnicodeBlock.of('わ')」を評価してみます.表示は以下のようになります.
| JShellへようこそ -- バージョン17.0.3 | 概要については、次を入力してください: /help intro jshell> Character.UnicodeBlock.of('わ') $1 ==> HIRAGANA
このとき,「Character.UnicodeBlock.of('わ')」は「HIRAGANA」と等しい,と判断してはいけないのです.実際,次のように比較してみると,エラーが出ます.
jshell> Character.UnicodeBlock.of('わ') == HIRAGANA | エラー: | シンボルを見つけられません | シンボル: 変数 HIRAGANA | 場所: クラス | Character.UnicodeBlock.of('わ') == HIRAGANA | ^------^
HIRAGANAはクラスCharacter.UnicodeBlockの定数であることに注意すると,次のように比較する必要があります.
jshell> Character.UnicodeBlock.of('わ') == Character.UnicodeBlock.HIRAGANA $2 ==> true
授業から離れまして,Character.UnicodeBlock.of('わ')の評価結果が,クラスCharacter.UnicodeBlockのオブジェクトであることは,以下の式より知ることができます.
jshell> Character.UnicodeBlock.of('わ').getClass().getCanonicalName() $3 ==> "java.lang.Character.UnicodeBlock"
クラスCharacter.UnicodeBlockのオブジェクトであるかどうかの判定は,instanceof演算子を使用します.
jshell> Character.UnicodeBlock.of('わ') instanceof Character.UnicodeBlock $4 ==> true