[問題] 傳值
小弟的母語是C++
初學java
知道java 的傳參考跟c++是不一樣的
java有分基本變數跟物件變數
當是基本變數的時候相當於c的傳值呼叫
物件變數的時候相當於c的傳參考
我在這邊做了一下測試
發現跟我已知的有點不合
以下是小弟寫的兩個例子
//test.java
1 public class test {
2 public static void main(String[] args) {
3 c1 cc=new c1();
4 cc.a=5;
5
6 some(cc);
7 System.out.println(cc.a);
8 }
9 private static void some(c1 y) {
10 y.a=20;
11 }
12 }
13
14 class c1
15 {
16 int a;
17 }
Output出來的結果a變更為20,與小弟已知的符合
//test2.java
1 public class test2
2 {
3 public static void main(String[] args) {
4 Integer i=new Integer(5);
5 System.out.println(i);
6 some(i);
7 System.out.println(i);
8 }
9 private static void some(Integer j)
10 {
11 j=50;
12 }
13 }
Output出來的結果,i仍然是5
不過Integer不是屬於物件型態嘛?
那為什麼在這個例子,仍然相當於c++的傳值呼叫?
做所謂的裝箱動作不就是為了要有傳參考的效果嘛?
--
~宅男的四個徵兆~
∠□ ○ ! * \○/ ★ (○ ?
╦╦└□ " ○□═ □ □>
║║√√ ╦══╦ ∥ |\
一回家就上PTT 每天想正妹 以當好人為樂 忘記正妹虧欠自己
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.43.56.123
→
09/15 23:02, , 1F
09/15 23:02, 1F
→
09/15 23:35, , 2F
09/15 23:35, 2F
討論串 (同標題文章)