2012-08-01 82 views
1

在C中给出以下声明,我可以将“+”应用于该地址,并访问其他元素。如何通过Java中的指针算术来访问数组元素

char toto[5]; 

换句话说,应用该操作员+

toto+0x04 

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

是否有另一种方法来在java中实现这个操作?

非常感谢

+7

你想达到什么目的?你想通过添加一个内存地址来访问数组中的一个元素吗? – CosmicComputer 2012-08-01 13:48:42

+4

__I的答案可以在X上完成,有没有办法在Y上完成它?__几乎总是YES。发布前做一些调查。 – 2012-08-01 13:50:28

+4

我敢肯定,你不能添加一个内存地址到一个字符数组在java中;) – 2012-08-01 13:51:38

回答

2

技术上没有因为TOTO + 4是一个地址和Java的内存管理政策是由C的一个很大的不同。但是你可以用toto [4]得到*(toto + 4);)

3

如果我是对的,你想访问数组中该位置的元素。你可以用java做这个。

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

,并分配一个新的值是这样的:

foo[4] = 'x'; 
0

几乎总是有在java中另一种方式来实现你想要什么。

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

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

以字面解答您的问题。你可以使用带有get/putByte或get/putChar类的sun.misc.Unsafe来做指针算术,但是我建议避免它,除非你确实需要。

1
其实我需要的最后四个字节,其中一个参数是隔离

一个char []

你需要的最后四个字节,或者最后一个字符?最后一个字符然后toto[toto.length-1]

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

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