1

C で次の宣言を行うと、アドレスに「+」を適用して、他の要素にアクセスできます。

char toto[5];

つまり、この演算子 + を適用すると、

toto+0x04

Java で別の配列要素にアクセスします。

この操作を Java で実装する別の方法はありますか?

どうもありがとう

4

4 に答える 4

3

私が正しければ、配列内のその位置にある要素にアクセスしたいでしょう。Javaでこれを行うことができます。

char foo[] = new char[]{'1', '2','3','4', '5'};
char fooAtPositionFour = foo[4];

この方法で新しい値を割り当てます。

foo[4] = 'x';
于 2012-08-01T13:55:29.937 に答える
2

toto + 4はアドレスであり、Javaのメモリ管理ポリシーはCのポリシーとはかなり異なるため、技術的にはありません。ただし、toto [4]で*(toto + 4)を取得できます;)

于 2012-08-01T13:53:54.150 に答える
1

ほとんどの場合、Javaには必要なものを実装する別の方法があります。

char[]直接処理することはめったにありません。StringとStringBuilderを使用することをお勧めします。

String toto = "hello";
String lastChar = toto.substring(4); // from the 4th character.

あなたの質問に文字通り答えること。sun.misc.Unsafeをget/putByteまたはget/putCharクラスとともに使用してポインター演算を行うことができますが、本当に必要な場合を除いて、これを避けることをお勧めします。

于 2012-08-01T15:02:27.710 に答える
1

実際、paramがchar []である最後の4バイトを分離する必要があります

最後の 4 バイトまたは最後の文字が必要ですか? 最後の文字toto[toto.length-1]

最後の 4 バイトについては、char 配列 (Java では UTF-16、C ではエンコーディングがどうなるかわかりません) をバイト配列に変換してから、最後の 4 バイトを取得する必要があります。

new String(toto).toBytes("THE_CHAR_ENCODING_YOU_WANT_TO_USE")
于 2012-08-01T15:16:41.553 に答える