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
