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

Java 9のJShellで文字列を操作する方法を徹底解説

JShellは、Java 9で初めて導入されたJava公式のREPL(Read-Evaluate-Print Loop)ツールです。コマンドラインプロンプト上でステートメント簡単なプログラムループなどの小さなロジックをその場で入力し、即座に実行・評価できるのが特徴です。ソースファイルの作成やコンパイルが不要なため、APIの動作確認やJavaの学習に非常に便利な環境を提供します。

文字列の実装例

以下の例では、Stringクラスがあらかじめ提供している定義済みメソッドを使用して、JShell上で文字列を操作しています。

jshell> String str = "{abcd}";
str ==> "{abcd}"

jshell> str.substring(2, str.length() - 1)
$7 ==> "bcd"

jshell> String s1 = new String("abcd");
s1 ==> "abcd"

jshell> String s2 = new String("abcd");
s2 ==> "abcd"

jshell> s1 == s2
$10 ==> false

jshell> s1.equals(s2)
$11 ==> true

jshell> String s3 = "abcd";
s3 ==> "abcd"

jshell> String s4 = "abcd";
s4 ==> "abcd"

jshell> s3 == s4
$14 ==> true

jshell> s3.equals(s4)
$15 ==> true

jshell> s1 == s3
$16 ==> false

jshell> s1.equals(s3)
$17 ==> true

jshell> String s5 = "a" + "bcd";
s5 ==> "abcd"

jshell> s3 == s5
$19 ==> true

jshell> "abcd".getBytes()
$20 ==> byte[4] { 97, 98, 99, 100 }

jshell> "abcd".getBytes("UTF-16")
$22 ==> byte[10] { -2, -1, 0, 97, 0, 98, 0, 99, 0, 100 }

jshell> String raw = "1|2|3|4";
raw ==> "1|2|3|4"

jshell> raw.split("\\|")
$24 ==> String[4] { "1", "2", "3", "4" }

実行結果のポイント解説

「==」と「equals()」の違い

new String("abcd")で生成したオブジェクト同士を==で比較するとfalseになります。これは、それぞれ別のインスタンスがヒープ上に作成されるためです。一方、文字列リテラル("abcd")は文字列プール(String Pool)で同じインスタンスを共有するため、s3 == s4trueになります。値そのものを比較したい場合は、常にequals()メソッドを使うのが安全です。

substring()による部分文字列の取得

str.substring(2, str.length() - 1)のように、開始インデックスと終了インデックスを指定することで、「{abcd}」から波括弧を除いた「bcd」を抽出できます。

getBytes()によるバイト配列への変換

getBytes()は文字列をバイト配列に変換します。デフォルトの文字セットでは「abcd」が{ 97, 98, 99, 100 }に変換されます。"UTF-16"を指定した場合は、先頭にBOM(バイト順マーク:-2, -1)が付加され、各文字が2バイト表現になるため10バイトの配列が返されます。

split()による文字列の分割

split("\\|")のように、区切り文字を指定して文字列を分割できます。「|」は正規表現における特殊文字(OR演算子)であるため、バックスラッシュでエスケープする必要がある点に注意してください。

  1. Java 9でJavaFXを使ってJShellをプログラムから実装する方法

    JShellは、サンプル式を対話的に実行できるツールです。通常はコマンドラインから利用しますが、JavaFXアプリケーションの中でプログラム的にJShellを実装することも可能です。その場合、Javaプログラムに以下のパッケージをインポートする必要があります。import jdk.jshell.JShell; import jdk.jshell.SnippetEvent; import jdk.jshell.VarSnippet;これらのクラスの役割は次のとおりです。JShell:評価エンジンの本体。式や文を評価(eval)するためのAPIを提供します。SnippetEvent:評価結果として

  2. JavaのJToggleButton実装ガイド:ON/OFF切替ボタンの作り方を解説

    JToggleButtonとは JToggleButtonはAbstractButtonを拡張したクラスで、クリックするたびにONとOFFが切り替わるトグルボタンを実現するために使用されます。通常のボタンと異なり、押した状態を保持できるのが特徴です。 JToggleButtonの主な特徴 最初に押されたときは押し込まれた状態のままとなり、もう一度押してはじめて元の状態(押されていない状態)に戻ります。 ボタンが押されるたびにActionEventが発生します。 さらに、JToggleButtonはItemEventも発生させることができます。このイベントは、選択状態という概念を持つコンポー