は
char buf[] = "test";
Cで同等
String buf = new String("test");
Javaで?
そして
char *buf;
buf = "test";
に相当
String buf = "test";
?
あなたが運転していることは理解していますが、それらが同等であると言うのは難しいです.
あなたの C バージョンは 8 ビット文字のシーケンスです。Java バリアントは Unicode 対応です。
第二に、Java では、一連の文字ではなく、動作を伴うオブジェクトを作成しています。
最後に、Java バリアントはimmutableです。String
参照は変更できますが、基になる文字セットは変更できません (これは、オブジェクトによってラップされる機能です)。
ほぼ同等のものについては、Java でバイト配列を使用できます。ただし、これは null で終了しないことに注意してください。Java 配列は、null 終了の規則を使用するのではなく、その長さを認識しています。あるいは、より近いC++の同等物はおそらくstd::string
最初の 2 つは同等ではありません。Java では、String オブジェクトは char 配列を格納するだけでなく、他のもの (長さフィールドなど) も含みます。もちろん、Java版はもっとオブジェクト指向です。
2番目のものは、上記と同じ観察結果と同等です。どちらも文字のコンテナーへのポインターです。c コンテナーは単純な char 配列ですが、文字列は本格的なオブジェクトです。
この質問には実際には答えられません。リンゴとオレンジを比較しているのです。
C では、「文字列」は実際には単なるchar
配列であり、null で終了します (つまり'\0'
、最後のバイトであり、コンパイラによって配置され、str__()
ライブラリ関数によって期待されます。
Java では、String
文字の配列と整数カウントを保持するオブジェクトです。
それらは異なるものであり、使用方法も異なります。あなたが達成しようとしている特定の何かがあり、問題を抱えていますか? もしそうなら、それを尋ねてください、そして私たちはそれに答えようとします. そうでなければ、これは実際には有効な質問ではありません、IMO.
いいえ。これらは異なるデータ型です。char buf[]
は配列でString buf
あり、オブジェクトです。はString buf
動的にサイズ変更され、便利なメソッドがたくさんあります。char buf[]
5 つの 8 ビット文字を保持する静的サイズのメモリのチャンクです。
以下は、文字の配列を作成します
char buf[] = "test";
asString buf = new String("test");
は の作成につながりますString Object
が、内部的にはchar[]
それ自体が String オブジェクトラッパーを使用して内部的に不変になります。したがって、上記の2つのプログラミング言語の表現の違いです。