Takže dělá prostě něco jako toto:
static void zmenPoleBajtu(byte[] b) {
b[0] = 'd';
b[1] = 'e';
b[2] = 'f';
}
Díky! Už jsem doma! Proč jste to neřekl hned? :-) Ono je to s těmi
referencemi poměrně složité. Alespoň pro mojí hlavu :-) A jak tu někdo říkal
tak asi hodně programátorů prostě jen používá a nepřemýšlí co se přesně
děje. A čím víc umí Springů, J2EE a všeho podobného tím víc je možná
zarážející, že ty úplné nej low-level základy pokulhávají. Jako vysocí
matematici nemějí pak spočítat, kolik jim májí vrátit v krámě :-)
Děkuji pane Novotný za vysvětlení!
Libor
Dne 4. dubna 2011 13:42 Robert Novotny <[email protected]> napsal(a):
> Ona nemeni pole, ona meni prvky tohto pola.
>
>
> On 4. 4. 2011 13:33, Libor Jelinek wrote:
>
> Děkuji pane Thone,
> to tedy znamená, že znovu nechápu jak může read(byte[] b) z např.
> FileInputStream měnít hodnotu parametru, když je mu předána nikoli
> reference, ale nový objekt se stejnou hodnotou jako měl (má) mnou
> předávaný... Viz můj předchozí nebo váš úryvek kódu.
>
> Libor
>
> 2011/4/4 Ladislav Thon <[email protected]>
>
>> nikoliv, naopak, vše je předáváno referencí.
>>>
>>
>> Ne, původní pisatel to má správně, vše se předává hodnotou -- primitivní
>> i referenční typy. Tohle je pekelně rozšířený omyl.
>>
>> Předávání parametrů odkazem (referencí) by znamenalo, že můžete tu
>> původní proměnnou "vyměnit", asi takhle:
>>
>> void caller() {
>> String a = "a";
>> callee(a);
>> // !!! co je v proměnné a?
>> }
>>
>> void callee(String param) {
>> String b = "b";
>> param = b;
>> }
>>
>> Kdyby se parametr param v metodě callee předával referencí, pak by na
>> konci metody caller platilo "b".equals(a). Pokud se dobře pamatuju, v C# by
>> to takhle fungovalo, kdyby ten parametr byl deklarovaný "ref String param".
>>
>> Jenže referenční typy se v Javě předávají hodnotou -- dostanete kopii
>> reference, takže můžete změnit _stav_ objektu (v ukázce ne, String je
>> neměnitelný), ale nemůžete _vyměnit_ ten objekt jako takový.
>>
>> Pro pole platí totéž, jsou to taky referenční typy (dalo by se říct, že
>> to jsou vlastně taky objekty, a nebyla by to úplná lež).
>>
>> LT
>>
>
>
>