「アミーゴ、どう思いますか? int の次に最も人気のある Java クラスは何ですか?」

「エリー、レッスンのタイトルですでにネタバレしてしまいましたね。それはString!」

「確かに、ネタバレです。」はStringあらゆるところで使われています。知っておくとよい便利な方法がたくさんあります。

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

「また、このStringクラスには、Java での文字列の操作をさらに簡略化することを目的とした多数のヘルパー クラスがあります。これをすべて学ぶと、多くのことが実際にはるかに簡単になります。」

"待ってられない。"

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

Stringクラスの構造

それは重要です。

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

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()
文字列を文字列プールに入れます。

「とても良さそうですよ!」

「ファイル パスを 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 番目の文字はエスケープされます)。
文字列を表示します。

「私は 3 番目の解決策が最も気に入りました。しかし、3 つすべてを練習してみます。」

「よくやった、アミーゴ。君はすでに新しい知識を実践したくて待ちきれないようだ。レッスンは終わった。」