在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