看板 java 關於我們 聯絡資訊
Java 沒有所謂的 call by address , 也沒有 call by reference . 所以 交換兩數 就用 call by object . 底下兩種方法(方法一與方法二) , 都可以實作 交換兩數 . 請問大家 , 應該要用哪一種方式去實作比較好呢 ? 理由是什麼 ? ( 又或者這兩種方式都不好 , 應該採用什麼方式來實作呢 ? ) <方法一> 檔名 MyIntObj.java ------------------ public class MyIntObj { int int_value; public MyIntObj(int int_value) { this.int_value = int_value; } public static void swap_int(MyIntObj x, MyIntObj y) { int temp_value = x.int_value; x.int_value = y.int_value; y.int_value = temp_value; } public static void main(String args[]) { MyIntObj x = new MyIntObj(3); MyIntObj y = new MyIntObj(5); System.out.println("before swap:"); System.out.println("int - x = " + x.int_value); System.out.println("int - y = " + y.int_value); swap_int(x,y); System.out.println("after swap:"); System.out.println("int - x = " + x.int_value); System.out.println("int - y = " + y.int_value); } } <方法二> 檔名 MyIntObj.java ------------------ class Number { int int_value; public Number(int int_value) { this.int_value = int_value; } public void swap(Number p,Number q) { int temp_value = p.int_value; p.int_value = q.int_value; q.int_value = temp_value; } } public class MyIntObj { public static void main(String args[]) { Number x = new Number(3); Number y = new Number(5); System.out.println("before swap:"); System.out.println("int - x = " + x.int_value); System.out.println("int - y = " + y.int_value); x.swap(x,y); System.out.println("after swap:"); System.out.println("int - x = " + x.int_value); System.out.println("int - y = " + y.int_value); } } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.121.247.34 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1451648398.A.993.html
Frozenmouse: 兩邊根本都一樣,只差在 main 寫哪而已吧… 01/01 21:27
baconcsie: 同上… 01/01 22:28
cha122977: 有call by value啊…你用primative type就是… 01/02 01:19
cha122977: primitive 01/02 01:20
eieio: 兩邊都一樣 01/02 03:55
kikilalagirl: 方法一 有1個class ; 方法二 有兩個class (被打 01/02 18:12
k47100014: 如果程式複雜非得要分類的話就N個class 寫簡單的作業一 01/04 02:35
k47100014: 個就好了 01/04 02:35
weakstudy: 這方法一和方法二,講的是同樣的方法 06/27 20:38