1.Stringクラスの構成

今日はクラスについてお話しますString。String クラスは、int に次いで Java で最も人気のあるクラスです。どこでも絶対に使われています。知っておくと便利な方法がたくさんあります。

このStringクラスは、ステートメント内でリテラルを使用できるプリミティブ型以外の唯一のクラスですswitch。コンパイラは文字列の追加と String オブジェクトを特別な方法で処理します。Stringオブジェクトは特別な方法でメモリに保存されます。基本的にこのStringクラスは非常に特殊なクラスです。

また、このStringクラスには、Java での文字列の操作をさらに簡素化することを目的とした多数のヘルパー クラスがあります。これをすべて学ぶと、多くのことが本当に簡単にできるようになります。さて、このエコシステムのまさに核心であるクラスの組織から始めますString

文字の配列

このクラスの構造はString実際には非常に単純です。その内部には、文字列のすべての文字を格納する文字配列 (char 配列) があります。たとえば、「He​​llo」という単語は次のように保存されます。

Stringクラスの構造
重要!

実際には、これはあまり正確ではありません。このクラスは非常に重要であるためString、多くの最適化が使用され、データは文字配列としてではなく、単純なバイト配列として内部的に保存されます。


2.Stringクラスのメソッド

このStringクラスには多くのメソッドがあり、コンストラクターだけでも 18 個あります。したがって、以下では最も基本的なもののみについて説明します。

メソッド 説明
int length()
文字列内の文字数を返します。
boolean isEmpty()
文字列が空の文字列かどうかを確認します
boolean isBlank()
文字列に空白文字 (スペース、タブ、改行など) のみが含まれていることを確認します。
char charAt(int index)
文字列内のインデックス位置にある文字を返します。
char[] toCharArray()
文字列を構成する文字の配列 (コピー) を返します。
byte[] getBytes()
文字列をバイトのセットに変換し、バイトの配列を返します。
String[] split(String regex)
文字列を複数の部分文字列に分割します。
String join(CharSequence delimiter, elements)
複数の部分文字列を結合します
String intern()
に文字列を入れますstring pool

コンストラクターの詳細については、 「Java コンストラクター」の記事を参照してください。

ファイル パスを Unix スタイルから Windows スタイルに変換するプログラムを書いてみましょう。Unix では/フォルダーを区切るために文字が使用されますが、Windows では\文字が使用されます。

解決策 1: char 配列を使用する

コード ノート
Scanner console = new Scanner(System.in);
String path = console.nextLine();

char[] chars = path.toCharArray();
for (int i = 0; i < chars.length; i++)
   if (chars[i] == '/')
      chars[i] = '\\';

String result = new String(chars);
System.out.println(result);
Scanner オブジェクトを作成します。
コンソールから行を読み取ります

。 文字列を文字配列に変換します。
文字をループします。
文字が の場合は、 に置き換えます。逃げることも忘れずに。 文字配列に基づいて新しい文字列を作成します。 文字列を表示します。 /
\


解決策 2:split()およびjoin()メソッドを使用する

コード ノート
Scanner console = new Scanner(System.in);
String path = console.nextLine();

String[] array = path.split("/");


String result = String.join("\\", array);


System.out.println(result);
Scanner オブジェクトを作成します。
コンソールから 1 行を読み取ります。文字列を文字列の配列

に変換します。この文字は区切り文字として使用されます (余分な 2 つのスラッシュは二重エスケープの結果です)。文字列の配列 内のすべての文字列を連結します。は区切り文字として使用されます (エスケープされていることがわかります)。 文字列を表示します。 /
\

解決策 3:replace(char oldChar, char newChar)メソッドを使用する

コード ノート
Scanner console = new Scanner(System.in);
String path = console.nextLine();

String result = path.replace('/', '\\');

System.out.println(result);
Scanner オブジェクトを作成します。
コンソールから行を読み取ります。

1 つの文字を別の文字に置き換えるだけです
(2 番目の文字はエスケープされます)。
文字列を表示します。