[問題] 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
→
01/01 21:27, , 1F
01/01 21:27, 1F
推
01/01 22:28, , 2F
01/01 22:28, 2F
→
01/02 01:19, , 3F
01/02 01:19, 3F
→
01/02 01:20, , 4F
01/02 01:20, 4F
→
01/02 03:55, , 5F
01/02 03:55, 5F
→
01/02 18:12, , 6F
01/02 18:12, 6F
推
01/04 02:35, , 7F
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
java 近期熱門文章
PTT數位生活區 即時熱門文章