作者kikilalagirl (kikilala)
看板java
標題[問題] Java 交換兩數 的寫法 ?
時間Fri Jan 1 19:39:56 2016
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://webptt.com/m.aspx?n=bbs/java/M.1451648398.A.993.html
1F:→ Frozenmouse: 兩邊根本都一樣,只差在 main 寫哪而已吧… 01/01 21:27
2F:推 baconcsie: 同上… 01/01 22:28
3F:→ cha122977: 有call by value啊…你用primative type就是… 01/02 01:19
4F:→ cha122977: primitive 01/02 01:20
5F:→ eieio: 兩邊都一樣 01/02 03:55
6F:→ kikilalagirl: 方法一 有1個class ; 方法二 有兩個class (被打 01/02 18:12
7F:推 k47100014: 如果程式複雜非得要分類的話就N個class 寫簡單的作業一 01/04 02:35
8F:→ k47100014: 個就好了 01/04 02:35
9F:→ weakstudy: 這方法一和方法二,講的是同樣的方法 06/27 20:38