23. 参照渡し
23. 参照渡し
値渡し
lesson 054
class Lesson054 { String name; int age; public static void main(String args[]) { System.out.println("名前\t\t年齢"); Lesson054 hina = new Lesson054(); hina.name = "成瀬川なる"; hina.age = 17; hina.write(); prm_ch(hina.name , hina.age); hina.write(); } void write() { System.out.println(name + "\t" + age); } static void prm_ch(String name , int age) { name = "前原しのぶ"; age = 13; System.out.println(name + "\t" + age + "(prm_chメソッド内)"); } }
実行結果
L:\>java Lesson054
名前 年齢
成瀬川なる 17
前原しのぶ 13(prm_chメソッド内)
成瀬川なる 17
オブジェクトは 参照渡し
lesson 055
class Lesson055 { String name; int age; public static void main(String args[]) { System.out.println("名前\t\t年齢"); Lesson055 hina = new Lesson055(); hina.name = "成瀬川なる"; hina.age = 17; hina.write(); ref(hina); hina.write(); } void write() { System.out.println(name + "\t" + age); } static void ref(Lesson055 obj) { obj.name = "前原しのぶ"; obj.age = 13; System.out.println(obj.name + "\t" + obj.age + "(refメソッド内)"); } }
実行結果
L:\>java Lesson055
名前 年齢
成瀬川なる 17
前原しのぶ 13(refメソッド内)
前原しのぶ 13
配列は 参照渡し
lesson 055
class Lesson056 { String[] name; int[] age; public static void main(String args[]) { System.out.println("名前\t\t年齢"); Lesson056 hina = new Lesson056(); hina.name = new String[1]; hina.age = new int[1]; hina.name[0] = "成瀬川なる"; hina.age[0] = 17; hina.write(); ref(hina.name , hina.age); hina.write(); } void write() { System.out.println(name[0] + "\t" + age[0]); } static void ref(String[] name , int[] age) { name[0] = "前原しのぶ"; age[0] = 13; System.out.println(name[0] + "\t" + age[0] + "(refメソッド内)"); } }
実行結果
L:\>java Lesson056
名前 年齢
成瀬川なる 17
前原しのぶ 13(refメソッド内)
前原しのぶ 13