如何通过Java中的指针算法访问数组元素
鉴于C中的以下声明,我可以对地址应用“+”,并访问其他元素。
char toto[5];
换句话说,应用此运算符+
toto+0x04
在Java中访问不同的数组元素。
还有另一种在java中实现此操作的方法吗?
非常感谢
如果我是对的,你想要访问数组中该位置的元素。 你可以在java中做到这一点。
char foo[] = new char[]{'1', '2','3','4', '5'}; char fooAtPositionFour = foo[4];
并以这种方式分配新值:
foo[4] = 'x';
技术上没有,因为toto + 4是一个地址,Java的内存管理策略与C的完全不同。 但是你可以用toto [4]获得*(toto + 4);)
实际上我需要隔离最后四个字节,其中param是char []
你需要最后四个字节,还是最后一个字符? 最后一个字符然后toto[toto.length-1]
对于最后四个字节,您需要将char数组(Java中的UTF-16,我不知道C中的编码是什么)转换为字节数组,然后取最后四个字节。
new String(toto).toBytes("THE_CHAR_ENCODING_YOU_WANT_TO_USE")
几乎总是在java中有另一种方法来实现你想要的东西。
你很少直接处理char[]
。 首选使用String和StringBuilder。
String toto = "hello"; String lastChar = toto.substring(4); // from the 4th character.
从字面上回答你的问题。 您可以使用带有get / putByte或get / putChar类的sun.misc.Unsafe来执行指针算术,但我建议避免使用它,除非您确实需要。