0

char buf[] = "test";

Cで同等

String buf = new String("test");

Javaで?

そして

char *buf;
buf = "test";

に相当

String buf = "test";

4

5 に答える 5

9

あなたが運転していることは理解していますが、それらが同等であると言うのは難しいです.

あなたの C バージョンは 8 ビット文字のシーケンスです。Java バリアントは Unicode 対応です。

第二に、Java では、一連の文字ではなく、動作を伴うオブジェクトを作成しています。

最後に、Java バリアントはimmutableです。String参照は変更できますが、基になる文字セットは変更できません (これは、オブジェクトによってラップされる機能です)。

ほぼ同等のものについては、Java でバイト配列を使用できます。ただし、これは null で終了しないことに注意してください。Java 配列は、null 終了の規則を使用するのではなく、その長さを認識しています。あるいは、より近いC++の同等物はおそらくstd::string

于 2012-08-09T15:34:42.173 に答える
1

最初の 2 つは同等ではありません。Java では、String オブジェクトは char 配列を格納するだけでなく、他のもの (長さフィールドなど) も含みます。もちろん、Java版はもっとオブジェクト指向です。

2番目のものは、上記と同じ観察結果と同等です。どちらも文字のコンテナーへのポインターです。c コンテナーは単純な char 配列ですが、文字列は本格的なオブジェクトです。

于 2012-08-09T15:34:14.473 に答える
1

この質問には実際には答えられません。リンゴとオレンジを比較しているのです。

C では、「文字列」は実際には単なるchar配列であり、null で終了します (つまり'\0'、最後のバイトであり、コンパイラによって配置され、str__()ライブラリ関数によって期待されます。

Java では、String文字の配列と整数カウントを保持するオブジェクトです。

それらは異なるものであり、使用方法も異なります。あなたが達成しようとしている特定の何かがあり、問題を抱えていますか? もしそうなら、それを尋ねください、そして私たちはそれに答えようとします. そうでなければ、これは実際には有効な質問ではありません、IMO.

于 2012-08-09T15:37:33.007 に答える
0

いいえ。これらは異なるデータ型です。char buf[]は配列でString bufあり、オブジェクトです。はString buf動的にサイズ変更され、便利なメソッドがたくさんあります。char buf[]5 つの 8 ビット文字を保持する静的サイズのメモリのチャンクです。

于 2012-08-09T15:35:36.497 に答える
0

以下は、文字の配列を作成します

char buf[] = "test";  

asString buf = new String("test");は の作成につながりますString Objectが、内部的にはchar[]それ自体が String オブジェクトラッパーを使用して内部的に不変になります。したがって、上記の2つのプログラミング言語の表現の違いです。

于 2012-08-09T15:37:39.783 に答える