 Předávání parametrů v Javě může začátečníkům činit občas potíže a tak bych chtěl ukázat dva příklady na toto téma…
Předávání parametrů v Javě může začátečníkům činit občas potíže a tak bych chtěl ukázat dva příklady na toto téma… 
Zkuste si přeložit a spustit následující příklad:
 /** Java: predavani parametru odkazem nebo hodnotou?  */ public class Main {     /** Hlavní methoda */     public static void main(String[] args) {         // ukazka pro pole          int array[] = { 0 };         System.out.println("array[0]=" + array[0]);         inc(array);         System.out.println("array[0]=" + array[0]);         // ukazka pro primitivni datovy typ         int i = 0;         System.out.println("i=" + i);         inc(i);         System.out.println("i=" + i);     }     /** Zvysi hodnotu prvniho prvku pole */     private static void inc (int[] array) {         array[0] ++;     }     /** Nezvysi (!) hodnotu parametru i      */     private static void inc (int i) {         i++;     } } 
Když program spustíte, vypíše vám následující:
array[0]=0 array[0]=1 i=0 i=0
Jak je vidět, když předáte jako parametr pole, jeho prvky mohou být modifikovány a když předáte primitivní datový typ, tak není modifikován. Nicméně pokud někde v nějakém testu narazíte na otázku, jestli Java předává parametry odkazem nebo hodnotou, správná odpověď je vždy “hodnotou”. Důkazem může být tento příklad:
 /** Dukaz ze se parametry nepredavaji odkazem, ale hodnotou */ public class ByReferenceOrByValue {   /** Hlavni metoda*/   public static void main(String[] args) {       Integer i = new Integer(1);       Integer j = new Integer(2);       System.out.println("i=" + i + ", j=" + j);       swap(i,j);       System.out.println("i=" + i + ", j=" + j);   }   /** Kdyby se predavalo odkazem, musela by fungovat tato    * metoda     */    public static void swap(Integer a, Integer b) {        Integer c = a;        a = b;        b = a;    }  } 
Tento program vypíše následující:
i=1, j=2 i=1, j=2
tedy, odkaz na proměnnou nebyl modifikován.
 
						
Tvrzeni v zaveru neni pravda. Ano primitivni typy a jejich tridy se predavaji hodnotou, ale ostatni se predava odkazem.
[1] Já si ale stejně myslím, že mám pravdu.
Pokud zmenim metodu swap a do signatury dam neco jineho nez Integer (napr. MyBean), tak to bude fungovat stejne.
Kdyby v riti byly ryby…. Bohuzel nas autor ne rozumi rozdil jaki je mezi pointer a reference, v JAVIE je to inak panacku…