年収アップ無料転職カウンセリング実施中! | 転職エージェントはマイナビエージェント

Geekroid-ギークロイド(仮)|ITエンジニアの日常をささいな情報で彩るコラム

ITエンジニアの転職

文字列

文字列を扱うには、Stringクラスを利用します。ただし、他のクラスと異なり、new演算子によるインスタンス化は必要ありません。以下のように、文字列リテラルをString型の変数に代入するだけで利用できます。

String str = "こんにちは";
note

new演算子は利用しない
new演算子を利用して、以下のように表すこともできます。

String str = new String("こんにちは");

しかし、これは文字列リテラルでインスタンスがひとつ作成された後、new演算子でもう一度、インスタンスを生成するという意味になり、インスタンスが二重に生成されてしまいます。これは無駄なことなので、Stringオブジェクトをnew演算子で生成してはいけません。
文字列リテラルは、ダブルクォートで括ります(シングルクォートは文字リテラルを表しますので、混同しないようにしてください)。その性質上、リテラルそのものにダブルクォートを含めることはできません。たとえば以下のようなコードはエラーとなります。

String str = "こんにちは、"世界"!!";

上のようなケースでは、エスケープシーケンスを利用して、以下のように表してください。

String str = "こんにちは、"世界"!!";

同じく、文字列リテラルに改行を含めることもできません。代わりに、エスケープシーケンス「n」を利用して表します。

String msg = "あいうえお
かきくけこ";	… ×
String msg = "あいうえお\nかきくけこ";	… ○
テキストブロック

Java 13ではテキストブロックが追加され、複数行の文字列リテラルを表現できるようになりました(執筆時点ではPreview版です)。

StrBlock.java

package com.example.mynavi.string;

public class StrBlock {
  public static void main(String[] args) {
    @SuppressWarnings("preview")
    String str = """
    こんにちは、赤ちゃん!
    さようなら、赤ちゃん!
    """;
    System.out.println(str);
  }
}

こんにちは、赤ちゃん!
さようなら、赤ちゃん!

テキストブロックは「”””<改行>~”””」で表します。配下では自由に改行を加えられるので、これまでのように「\n」を利用する必要がなくなります。

なお、テキストブロックの中にインデントがある場合には、もっともインデントの少ない行に合わせて、インデントが除去されます。よって、コードの階層に合わせてテキストブロックをインデントしたとしても、余計なインデントが結果に反映されることはありません。

[Caution]
テキストブロックは、執筆時点でPreviewの扱いです。Eclipseで利用した場合、以下のような警告が表示されます。[プロジェクト・プロパティでプレビュー機能を有効にする]をクリックして、Preview機能を有効化してください。

▲Preview版に対する警告

また、Preview版を利用する場合は、@SuppressWarningsアノテーションでPreviewに対する警告を無効化しておきましょう。

文字列
文字列
length/codePointCountメソッド
isEmptyメソッド
charAtメソッド
indexOf/lastIndexOfメソッド
equals/equalsIgnoreCaseメソッド
regionMatchesメソッド
compareTo/compareToIgnoreCaseメソッド
trimメソッド
startsWith/endsWithメソッド
toLowerCase/toUpperCaseメソッド
substringメソッド
replaceメソッド
splitメソッド
joinメソッド
formatメソッド
appendメソッド

年収アップ無料転職カウンセリング実施中! | 転職エージェントはマイナビエージェント

Geekroid-ギークロイド(仮)|ITエンジニアの日常をささいな情報で彩るコラム

ITエンジニアの転職