在C中给出以下声明,我可以将“+”应用于该地址,并访问其他元素。如何通过Java中的指针算术来访问数组元素
char toto[5];
换句话说,应用该操作员+
toto+0x04
访问Java中的不同的数组元素。
是否有另一种方法来在java中实现这个操作?
非常感谢
在C中给出以下声明,我可以将“+”应用于该地址,并访问其他元素。如何通过Java中的指针算术来访问数组元素
char toto[5];
换句话说,应用该操作员+
toto+0x04
访问Java中的不同的数组元素。
是否有另一种方法来在java中实现这个操作?
非常感谢
技术上没有因为TOTO + 4是一个地址和Java的内存管理政策是由C的一个很大的不同。但是你可以用toto [4]得到*(toto + 4);)
如果我是对的,你想访问数组中该位置的元素。你可以用java做这个。
char foo[] = new char[]{'1', '2','3','4', '5'};
char fooAtPositionFour = foo[4];
,并分配一个新的值是这样的:
foo[4] = 'x';
几乎总是有在java中另一种方式来实现你想要什么。
您很少直接处理char[]
。使用String和StringBuilder是首选。
String toto = "hello";
String lastChar = toto.substring(4); // from the 4th character.
以字面解答您的问题。你可以使用带有get/putByte或get/putChar类的sun.misc.Unsafe来做指针算术,但是我建议避免它,除非你确实需要。
其实我需要的最后四个字节,其中一个参数是隔离一个char []
你需要的最后四个字节,或者最后一个字符?最后一个字符然后toto[toto.length-1]
对于最后四个字节,您需要将char数组(UTF-16在Java中,我不知道C中的编码是什么)转换为字节数组,然后将最后一个字符四个字节。
new String(toto).toBytes("THE_CHAR_ENCODING_YOU_WANT_TO_USE")
你想达到什么目的?你想通过添加一个内存地址来访问数组中的一个元素吗? – CosmicComputer 2012-08-01 13:48:42
__I的答案可以在X上完成,有没有办法在Y上完成它?__几乎总是YES。发布前做一些调查。 – 2012-08-01 13:50:28
我敢肯定,你不能添加一个内存地址到一个字符数组在java中;) – 2012-08-01 13:51:38