如何通过Java中的指针算法访问数组元素

时间:2012-08-01 13:46:40

标签: java c arrays iterator operators

在C中给出以下声明,我可以对地址应用'+'并进行访问 其他元素。

char toto[5];

换句话说,应用此运算符+

toto+0x04

在Java中访问不同的数组元素。

还有另一种在java中实现此操作的方法吗?

非常感谢

4 个答案:

答案 0 :(得分:3)

如果我是对的,你想要访问数组中该位置的元素。你可以在java中做到这一点。

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

并以这种方式分配新值:

foo[4] = 'x';

答案 1 :(得分:2)

技术上没有,因为toto + 4是一个地址,Java的内存管理策略与C的完全不同。但是你可以用toto [4]获得*(toto + 4);)

答案 2 :(得分:1)

  

实际上我需要隔离最后四个字节,其中param是char []

您需要最后四个字节,还是最后一个字符?最后一个字符toto[toto.length-1]

对于最后四个字节,您需要将char数组(Java中的UTF-16,我不知道C中的编码是什么)转换为字节数组,然后取最后四个字节。

new String(toto).toBytes("THE_CHAR_ENCODING_YOU_WANT_TO_USE")

答案 3 :(得分:0)

几乎总是在java中有另一种方法来实现你想要的东西。

您很少直接处理char[]。首选使用String和StringBuilder。

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

从字面上回答你的问题。您可以将sun.misc.Unsafe与get / putByte或get / putChar类一起使用来进行指针运算,但我建议您避免使用它,除非您确实需要。