První parametr metody putChar je adresa, ne index do pole:

public native void putChar(long address, char x);

Z.
-- 
Zdenek Tronicek
FIT CTU in Prague


Oto Buchta napsal(a):
> Samozrejme ze to neni ukazatelova aritmetika. Z pohledu jazyka je to
> aritmetika celociselna.
> A index v poli IMHO neni ukazatel.
>
> Semanticky totez by se dalo jednoduse naprogramovat nad polem, vzdyt
> ArrayList je de facto totez.
>
> A jeste jedna perlicka na zaver: predstavte si JVM naimplementovane nad
> turingovym strojem a nebo, coz bude jasnejsi, pomoci
> konecneho automatu. Nebo cehokoli jineho, co neni naimplementovano dle von
> Neumanna. A udelat to samozrejme lze. Proto je take Unsafe v sun.misc .
>
> Dne 4. března 2011 19:01 "Zdeněk Troníček" <[email protected]>
> napsal(a):
>
>> Nerad bych tady vyvolal nějakou flame war, ale ukazatelová aritmetika to
>> podle mého názoru je. Např. v metodě writeToMem je p ukazatel (obsahuje
>> adresu) a k tomuto ukazateli se přičítá 2, tj. sečte se ukazatel a int a
>> výsledkem je ukazatel:
>>
>>    static void writeToMem(Unsafe u, long p, byte[] values) {
>>        for (byte b : values) {
>>            u.putChar(p, (char) b);
>>            p += 2;
>>        }
>>    }
>>
>> Jinak celý článek byl napsán spíš jako vtip, než že by chtěl popisovat
>> nějakou neznámou vlastnost Javy.
>>
>> Z.
>> --
>> Zdenek Tronicek
>> FIT CTU in Prague
>>
>>
>> Martin Kuba napsal(a):
>> > Dne 4.3.2011 13:56, [email protected] napsal(a):
>> >> Jen bych doplnil, takovou libustku, ktera ukazuje, ze i Java ma
>> >> ukazatelovou aritmetiku.
>> >>
>> >> http://www.java.cz/article/ukazatelovaaritmetika
>> >>
>> >> Ale je to opravdu jen takova zajimavost.
>> >
>> > To není ukazatelová aritmetika. To jenom ukazuje,
>> > že pomocí nativních metod se dá přistupovat k paměti přímo,
>> > ale to je tím, že ty nativní metody jsou napsané v Céčku.
>> >
>> > Definice té metody Unsafe.putChar() totiž vypadá takto:
>> >
>> > public native void putChar(long address, char x);
>> >
>> >
>> > Stejně tak můžu pomocí nativní metody přistupovat
>> > k nějaké speciální vlastnosti nějakého operačního systému, třeba
>> > sdílené paměti mezi procesy nebo k nastavování práv na unixovém
>> > filesystému, ale tím se to nestává součástí Javy jakožto jazyka.
>> >
>> > Makub
>> > --
>> > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> > Supercomputing Center Brno             Martin Kuba
>> > Institute of Computer Science    email: [email protected]
>> > Masaryk University             http://www.ics.muni.cz/~makub/
>> > Botanicka 68a, 60200 Brno, CZ     mobil: +420-603-533775
>> > --------------------------------------------------------------
>> >
>> >
>>
>>
>
>
> --
> Oto 'tapik' Buchta, [email protected], http://tapikuv.blogspot.com
>

Odpovedet emailem