2012-08-01 67 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")