9

私は C++ から Java に移行したばかりの学生です。

Java で、String 配列と Char 配列に別々のデータ型を定義する主な理由は何ですか? 2つの違いは何ですか?

私は C++ しか勉強したことがないので、今までは同じものだと思っていました。可能であれば明確にしてください。

4

6 に答える 6

17

String不変です。Char配列ではありません。文字列は下に char 配列で実装されますが、それを変更しようとするたびに (連結、置換など)、新しい Stringオブジェクトが提供されます。

そのStringため、定数Char配列として動作しますが、非常に使いやすくする特定の構文シュガーも付属しています。たとえば、加算+演算子は文字列連結演算子としてもオーバーロードされています。

于 2013-08-20T15:12:20.570 に答える
3

Java ではString、基本的に をラップする基本的なシステム クラスですchar[]。ほとんどの用途で、配列を直接処理するよりも完全なクラスを使用する方が望ましい理由はいくつかあります。

  • Strings は不変です。some への参照を取得するStringと、それが決して変更されないことがわかります。
  • Strings は、ベア配列では不可能な便利なメソッド ( など) を提供しlength()、明確に定義された比較セマンティクスを持っています。
  • 自分で文字列の終端を処理する必要はありません。
  • Java には、文字列連結 ( を使用) をサポートするための「演算子のオーバーロードなし」という規則の特別な例外があります+

基本的に、クラスを使用して目的の動作とデータ構造を同じ場所に集め、String文字列に対して実行する便利な操作で文字の配列をラップすることは、オブジェクト指向の良い実践です。

于 2013-08-20T15:15:52.147 に答える
2

Stringは Java のクラスであり、メソッドを提供し、オブジェクトでもあります。

String オブジェクトも不変です。

内部値は文字配列です。

于 2013-08-20T15:11:39.920 に答える
0

文字列オブジェクトを使用する利点は、すべてのメソッドを使用できることです。例えば:

stringExample1.equals(stringExample2);

String stringExample3 = stringExample1.replace(substring1, substring2);
于 2013-08-20T15:17:56.280 に答える