Java
 Computer >> コンピューター >  >> プログラミング >> Java

Java 9のJShellでスクラッチ変数を作成する方法

JShellとは

JShellは、Java 9で導入されたREPL(Read-Eval-Print Loop)型の対話型ツールです。main()メソッドを記述することなく、変数宣言、ステートメント、式などの簡単なJavaプログラムをその場で実行・評価できるため、コードの動作確認や学習に非常に便利です。

スクラッチ変数とは

JShellでは、スニペットが返した値は自動的にスクラッチ変数として保存されます。スクラッチ変数は$記号で表されます。式の結果を明示的に変数へ代入しなかった場合でも、JShellが自動的にスクラッチ変数を生成するため、その出力を後から再利用することが可能です。

スクラッチ変数の作成例

以下のコードスニペットでは、6つのスクラッチ変数($1〜$6)が自動的に作成されています。

C:\Users\User>jshell
| Welcome to JShell -- Version 9.0.4
| For an introduction type: /help intro

jshell> 3+7
$1 ==> 10

jshell> 9-2
$2 ==> 7

jshell> 4*4
$3 ==> 16

jshell> 12/4
$4 ==> 3

jshell> 19%5
$5 ==> 4

jshell> String.valueOf($2)
$6 ==> "7"

この例では、各演算の結果が順番に$1、$2、$3…という名前のスクラッチ変数へ格納されています。さらに$6の例のように、String.valueOf($2)と記述することで、以前に作成したスクラッチ変数($2)を後続の式の中で参照できる点も重要なポイントです。

スクラッチ変数ではない通常の変数

一方、以下のコードスニペットでは「nonScratch」という変数を作成しています。この変数には開発者が明示的に名前を付けているため、$記号で表されることはなく、スクラッチ変数にはなりません。

jshell> String nonScratch = "Tutorialspoint"
nonScratch ==> "Tutorialspoint"

jshell>

/varsコマンドで変数の一覧を確認する

/vars」コマンドを使うと、そのセッション内で作成されたスクラッチ変数非スクラッチ変数の両方を一覧表示できます。

jshell> /vars
|     int $1 = 10
|     int $2 = 7
|     int $3 = 16
|     int $4 = 3
|     int $5 = 4
|     String $6 = "7"
|     String nonScratch = "Tutorialspoint"

jshell>

このように、JShellのスクラッチ変数機能を活用すれば、計算結果や式の評価値をわざわざ変数に代入しなくても自動的に保持でき、後続の処理で手軽に再利用できます。REPL環境での実験やJavaの学習において、ぜひ活用したい便利な機能です。

  1. Java 9のJShellでクラスとオブジェクトを作成する方法をわかりやすく解説

    JShellは、Java 9で新たに導入されたJavaシェルツールです。Java初の公式REPL(Read-Evaluate-Print-Loop:読み込み・評価・出力・繰り返し)アプリケーションとして提供されています。このツールを活用すると、ステートメント、ループ、式などの簡単なJavaプログラムやロジックを、その場で実行・評価することが可能です。Java REPLはコマンドプロンプト上で手軽なプログラミング環境を提供し、入力されたコードを読み取り、評価し、その結果を出力します。コンパイルやクラスファイルの作成を意識することなく、対話形式でJavaコードを試せるのが大きな特徴です。以下の例で

  2. Javaで一時ファイル(テンポラリファイル)を作成する方法

    プログラムの実行中に、一時的な情報を保存するためにその場で一時ファイルを作成し、後から削除したいケースはよくあります。 Javaでは、Files.createTempFile() メソッドを使用することで、簡単に一時ファイルを作成できます。 一時ファイルの作成 次の例では、Files.createTempFile(prefix, suffix) を使って一時ファイルを作成しています。 import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; public class CreateTem