Передача объекта и строкового литерала в качестве параметров
class Main { static void m (int[] i) { i[0] += 7; } public static void main (String[] args) { int[] j = new int[1]; j[0] = 12; m(j); System.out.println(j[0]); } }
выход
19
Здесь j и i указывают на один и тот же адрес, так что значение меняется и для i тоже.
Что я уже пробовал:
class Main { static void m (int i) { i += 7; } public static void main (String[] args) { int j; j= 12; m(j); System.out.println(j); } }
выход
12
class Main{ static void m(String s1) { s1=new String("acting"); } public static void main(String[] args) { String s2 = new String("action"); m(s2); System.out.println(s2); } }
выход
действие
здесь будет создана отдельная память для s1 и s2, так что этот вывод имеет смысл для меня.
class Main{ static void m(String s1) { s1="acting"; } public static void main(String[] args) { String s2 ="action"; m(s2); System.out.println(s2); } }
выход
действие
Но здесь строковые литералы будут указывать на одно и то же место и тогда тоже значение s2 не изменяется. Может ли кто-нибудь объяснить мне это ясно?