For-Each ループの反復変数を変更しても Java の基礎となる配列が変更されないのはなぜですか?
For-Each ループで反復変数を変更しても基礎となるデータが変更されない理由
Java では、拡張された for-Each ループは、配列またはコレクションを反復処理するための便利な構文です。ただし、ループ内の基になるデータを変更しようとすると、よくある誤解が生じます。
次のコード スニペットを考えてみましょう。
String boss = "boss"; char[] array = boss.toCharArray(); for(char c : array) { if (c== 'o') c = 'a'; } System.out.println(new String(array)); //Outputs "boss"
if-else ブロックが、出現するすべてのデータを置き換えようとしているにもかかわらず、 'o' を 'a' にすると、結果は "boss" のままになります。なぜこれが当てはまるのでしょうか?
この動作を理解する鍵は、for-each ループの反復変数の性質にあります。 for-each 構文を使用して配列を反復処理する場合、反復変数 (この場合は c) は、現在のインデックスにある配列要素のコピーにすぎません。反復変数に加えられた変更は、元の配列には反映されません。
基礎となるデータを変更するには、配列要素自体に明示的にアクセスして変更する必要があります。これは、標準の for ループ構文を使用して実現できます。
for (int i = 0; i < array.length; i++) { if (array[i] == 'o') { array[i] = 'a'; } }
この改訂されたコードでは、反復変数 i は配列内の現在のインデックスを追跡し、array[i] はその位置にある実際の要素にアクセスします。索引。 array[i] に直接代入すると、配列の内容が変更されます。
したがって、for-each ループ構文を使用して配列またはコレクションを操作する場合、反復変数だけを変更しても変更は行われないことに留意することが重要です。基礎となるデータを変更します。データに永続的な変更を加えるには、標準のループ構文またはその他の適切な方法を使用して、コレクション内の要素に明示的にアクセスして変更する必要があります。
以上がFor-Each ループの反復変数を変更しても Java の基礎となる配列が変更されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











一部のアプリケーションが適切に機能しないようにする会社のセキュリティソフトウェアのトラブルシューティングとソリューション。多くの企業は、内部ネットワークセキュリティを確保するためにセキュリティソフトウェアを展開します。 ...

多くのアプリケーションシナリオでソートを実装するために名前を数値に変換するソリューションでは、ユーザーはグループ、特に1つでソートする必要がある場合があります...

システムドッキングでのフィールドマッピング処理は、システムドッキングを実行する際に難しい問題に遭遇することがよくあります。システムのインターフェイスフィールドを効果的にマッピングする方法A ...

intellijideaultimatiateバージョンを使用してスプリングを開始します...

データベース操作にMyBatis-Plusまたはその他のORMフレームワークを使用する場合、エンティティクラスの属性名に基づいてクエリ条件を構築する必要があることがよくあります。あなたが毎回手動で...

Javaオブジェクトと配列の変換:リスクの詳細な議論と鋳造タイプ変換の正しい方法多くのJava初心者は、オブジェクトのアレイへの変換に遭遇します...

eコマースプラットフォーム上のSKUおよびSPUテーブルの設計の詳細な説明この記事では、eコマースプラットフォームでのSKUとSPUのデータベース設計の問題、特にユーザー定義の販売を扱う方法について説明します。

Redisキャッシュソリューションは、製品ランキングリストの要件をどのように実現しますか?開発プロセス中に、多くの場合、ランキングの要件に対処する必要があります。
