[問題] Java 交換兩數 的寫法 ?

看板java作者 (kikilala)時間9年前 (2016/01/01 11:39), 編輯推噓2(207)
留言9則, 7人參與, 最新討論串1/1
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

01/01 21:27, , 1F
兩邊根本都一樣,只差在 main 寫哪而已吧…
01/01 21:27, 1F

01/01 22:28, , 2F
同上…
01/01 22:28, 2F

01/02 01:19, , 3F
有call by value啊…你用primative type就是…
01/02 01:19, 3F

01/02 01:20, , 4F
primitive
01/02 01:20, 4F

01/02 03:55, , 5F
兩邊都一樣
01/02 03:55, 5F

01/02 18:12, , 6F
方法一 有1個class ; 方法二 有兩個class (被打
01/02 18:12, 6F

01/04 02:35, , 7F
如果程式複雜非得要分類的話就N個class 寫簡單的作業一
01/04 02:35, 7F

01/04 02:35, , 8F
個就好了
01/04 02:35, 8F

06/27 20:38, , 9F
這方法一和方法二,講的是同樣的方法
06/27 20:38, 9F
文章代碼(AID): #1MXcMEcJ (java)
文章代碼(AID): #1MXcMEcJ (java)