目次
1. 文字列について理解する
1. JDK の文字列
4 には影響しません。文字列比較は等しい
1. 文字列定数プールとは
2. 手動プール エントリ メソッド
3. 文字列の不変性
1. 不変である理由
ホームページ Java &#&チュートリアル JavaのStringクラスの使い方

JavaのStringクラスの使い方

Apr 19, 2023 pm 01:19 PM
java string

JavaのStringクラスの使い方

1. 文字列について理解する

1. JDK の文字列

まず、JDK の String クラスのソース コードを見てみましょう。これは、String クラスを継承できず、String のサブクラスが存在しないことを意味します。このようにして、JDK を使用するすべての人が同じ String を使用することになります。 String の継承を許可すると、誰もが String を拡張でき、全員が使用する String のバージョンが異なるため、2 人の異なる人が同じメソッドを使用して異なる結果を示し、コードの開発が不可能になります。 # 継承とメソッドのオーバーライドは柔軟性をもたらしますが、サブクラスの動作に一貫性がないという多くの問題ももたらします

JavaのStringクラスの使い方

2. 文字列を作成する 4 つの方法

メソッド 1: 直接代入 (一般的に使用されます)

String str = " hello word "

方法 2: 構築メソッドを通じてオブジェクトを生成する

String str1 = new String(" hello word ");

Method 3: 文字配列を使用してオブジェクトを生成します。

char[] data = new char[]{'a', 'b','c'};

方法 4: String valueOf(any の静的メソッドを使用してオブジェクトを生成します)データ型) = > 文字列に変換 (一般的に使用されます)

String str2 = String.valueOf(10);

JavaのStringクラスの使い方

3. 文字列リテラル

リテラル:直接書き込まれた値はリテラルと呼ばれます

10 – > int リテラル
10.1 --> double リテラル
true --> boolean リテラル
" abc " – > String リテラル
文字列リテラルは実際には文字列オブジェクトです
String str = “hello word”;
String str2 = str;
現時点では、これは両方とも文字列のオブジェクトです。文字列です。分かりやすいように絵を描いてみましょう。このとき、分かりやすいように一時的にヒープ上に格納されていると考えますが、実際にはメソッド領域に格納されます。

JavaのStringクラスの使い方 この時点で str2 = "Hello" が設定されている場合、" " で囲まれた Hello も文字列オブジェクトであり、新しいスペースが開かれていることを示すため、現時点では str の出力には影響しません。このとき、str2 はヒープを保存し、str2 は新しいオブジェクトのアドレス空間を保存し、str

JavaのStringクラスの使い方

4 には影響しません。文字列比較は等しい

Whenすべての参照データ型が等しいかどうかを比較するには、Equals メソッドの比較を使用します。JDK の共通クラスは、equals メソッドをオーバーライドしています。これを直接使用できます。
参照データ型は、== を使用してアドレスを比較します。
次の図は、2 つのデータ型を示しています。同じアドレス空間を指す参照。これは文字列の定数プールに関連しています。
JavaのStringクラスの使い方#次の図では、2 つのオブジェクトと 2 つのアドレス空間が生成されます。== を使用すると、false

## が返されます。 # 等号の比較サイズは大文字と小文字を区別して比較しますJavaのStringクラスの使い方

equalsIgnoreCase メソッドは大文字と小文字を区別しない比較ですJavaのStringクラスの使い方

JavaのStringクラスの使い方 2. 文字列定数プール

1. 文字列定数プールとは


## 直接代入方式を使用して文字列定数プールを生成する場合文字列オブジェクトの場合、JVM は文字列定数プールを維持します。オブジェクトがヒープに存在しない場合は、文字列オブジェクトを生成して文字列定数プールに追加します。文字列オブジェクトの生成に直接代入方法を使用し続ける場合は、 , JVM は、この参照が指すコンテンツが定数プールに既に存在することを検出します。この時点では、新しい文字列オブジェクトを作成する必要はありませんが、既存のオブジェクトを直接再利用します。これが、上の図の 3 つの参照が存在する理由です。 JavaのStringクラスの使い方

オブジェクトが初めて生成されるときは、定数プールに何もないため、文字列オブジェクトが生成され、定数プールに格納されます。 2 回目と 3 回目に生成されると、JVM は定数を見つけます。同じコンテンツがプールにすでに存在する場合、新しいオブジェクトは生成されず、str1JavaのStringクラスの使い方
## と同じアドレス空間を直接指します。

JavaのStringクラスの使い方
プログラムは右から左に実行されますが、このとき、コードの 1 行目の右側は文字列定数であり、これも文字列オブジェクトであるため、最初に定数プールに ヒープ内にスペースを作成し、次に新しい文字列オブジェクトを作成して保存します。プログラムは左側に実行され、新しいキーワードに遭遇します。このとき、新しいオブジェクトが作成され、ヒープに保存されます。次に、str1 はヒープ内のオブジェクトを指し、次に 2 行目を指します。コードを 3 行実行すると、そのオブジェクトが定数プールにすでに存在していることがわかります。新たに作成する必要はありません。new キーワードが見つかった場合、新しいオブジェクトが作成されます。メモリ ダイアグラムは次のとおりです:
JavaのStringクラスの使い方

2. 手動プール エントリ メソッド

String クラスによって提供されるインターン メソッド。これはローカル メソッドです。メソッド:
JavaのStringクラスの使い方
インターン メソッドを呼び出すと、現在の文字列参照が指すオブジェクトが文字列定数プールに保存されます。2 つのタイプがあります。 状況:
1. オブジェクトがすでに現在の定数プールに存在しない場合、新しいオブジェクトは生成されず、定数プール内の String オブジェクトが返されます。
2. オブジェクトが現在の定数プールに存在しない場合、オブジェクトはプールに置かれ、アドレスが返されます。プールに入れた後は返却されます。

1. 次のコード行の出力を見てください
JavaのStringクラスの使い方
インターン メソッドには戻り値があるため、str1 は現時点ではインターン メソッドのみを呼び出し、呼び出しは行いません。戻り値を受け取ります。したがって、str1 は依然としてヒープ内のオブジェクトを指し、str2 は定数プール内のオブジェクトを指しているため、false が返されます。
JavaのStringクラスの使い方
インターン呼び出しの戻り値である限り、メソッドを受信すると true が返されます;
JavaのStringクラスの使い方
この時点で、str1 が指すオブジェクトは手動でプールに追加されます。オブジェクトはすでにプールに存在します。str1 にオブジェクトを直接指すようにします。 .
JavaのStringクラスの使い方
2. 次のコード行を見てください。出力
JavaのStringクラスの使い方
手動でプールに入ると、プールには何もないため、直接プールに移動されます。定数プール
JavaのStringクラスの使い方


3. 文字列の不変性

1. 不変である理由

注: いわゆる不変文字列
JavaのStringクラスの使い方# ここでの不変とは、「hello」、「world」、「helloworld」、「!!」を指します。 !"、および結合された "helloworld!!!" これらのすでに作成された文字列オブジェクトは、これらのオブジェクトが宣言されると、その内容を後で変更することはできませんが、参照は変更できます。ある瞬間には hello を指し、別の瞬間にはそれが指しますhelloworld へ、そして今度は hello world を指しています! ! ! 、これはすべて可能です

JavaのStringクラスの使い方 文字列は単なる文字配列です -> char[]、文字列は実際には文字配列に格納されます。文字列の内容を変更できないのはなぜですか?文字列のソースコードを見て調べてみましょう。

JavaのStringクラスの使い方 String 内の文字配列がカプセル化されていることがわかります。この文字配列は String クラスの外部からアクセスすることはできず、ましてや文字列の内容を変更することはできません
String str = " hello " ;

JavaのStringクラスの使い方

2. 文字列の内容を変更する方法

1. 実行時のリフレクションを通じて値配列のカプセル化を破棄します

2. 代わりに StringBuilder または StringBuffer を使用しますClass - - は型ではなくなりました
a.StringBuilder: スレッド セーフ、強力なパフォーマンス
b.StringBuffer: スレッド セーフ、低パフォーマンス
さらに、2 つのクラスの使用法はまったく同じです。

文字列を頻繁に結合する必要がある場合は、StringBuilder クラスの append メソッドを使用してください。ここではオブジェクトが 1 つだけ生成され、しばらくの間 hello になり、しばらくの間 hello world になります。


JavaのStringクラスの使い方

3. StringBuilder クラスの具体的な使用方法

StringBuilder クラスと String は 2 つの独立したクラスです。StringBuilder クラスは、文字列の結合の問題を解決するために作成されました。 StringBuilder クラスと String クラス:


1.StringBuilder は String クラスになり、String メソッドを呼び出します


JavaのStringクラスの使い方2.String クラスは StringBuilder クラスに変換されます。StringBuilder のコンストラクターを使用するか、追加します。 method


JavaのStringクラスの使い方
その他の一般的に使用されるメソッド: JavaのStringクラスの使い方 a. sb;


によって提供される文字列反転操作 reverse()

b. 指定された範囲のデータを削除し、delete (int start, int end); 最初から最後まですべてを削除し、左側が閉じ、右側が開きます。 #c .Insert 操作、insert(int start、さまざまなデータ型): 開始インデックス位置から挿入します。挿入の開始インデックスは start
JavaのStringクラスの使い方

です。

以上がJavaのStringクラスの使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Javaの完全数 Javaの完全数 Aug 30, 2024 pm 04:28 PM

Java における完全数のガイド。ここでは、定義、Java で完全数を確認する方法、コード実装の例について説明します。

Java の乱数ジェネレーター Java の乱数ジェネレーター Aug 30, 2024 pm 04:27 PM

Java の乱数ジェネレーターのガイド。ここでは、Java の関数について例を挙げて説明し、2 つの異なるジェネレーターについて例を挙げて説明します。

ジャワのウェカ ジャワのウェカ Aug 30, 2024 pm 04:28 PM

Java の Weka へのガイド。ここでは、weka java の概要、使い方、プラットフォームの種類、利点について例を交えて説明します。

Javaのスミス番号 Javaのスミス番号 Aug 30, 2024 pm 04:28 PM

Java のスミス番号のガイド。ここでは定義、Java でスミス番号を確認する方法について説明します。コード実装の例。

Java Springのインタビューの質問 Java Springのインタビューの質問 Aug 30, 2024 pm 04:29 PM

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8 Stream Foreachから休憩または戻ってきますか? Java 8 Stream Foreachから休憩または戻ってきますか? Feb 07, 2025 pm 12:09 PM

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

Java での日付までのタイムスタンプ Java での日付までのタイムスタンプ Aug 30, 2024 pm 04:28 PM

Java での日付までのタイムスタンプに関するガイド。ここでは、Java でタイムスタンプを日付に変換する方法とその概要について、例とともに説明します。

未来を創る: まったくの初心者のための Java プログラミング 未来を創る: まったくの初心者のための Java プログラミング Oct 13, 2024 pm 01:32 PM

Java は、初心者と経験豊富な開発者の両方が学習できる人気のあるプログラミング言語です。このチュートリアルは基本的な概念から始まり、高度なトピックに進みます。 Java Development Kit をインストールしたら、簡単な「Hello, World!」プログラムを作成してプログラミングを練習できます。コードを理解したら、コマンド プロンプトを使用してプログラムをコンパイルして実行すると、コンソールに「Hello, World!」と出力されます。 Java の学習はプログラミングの旅の始まりであり、習熟が深まるにつれて、より複雑なアプリケーションを作成できるようになります。

See all articles