作者Arim (Arim5566)
看板java
标题[问题] 传值
时间Wed Sep 15 22:59:32 2010
小弟的母语是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
1F:→ james732:我猜因为Integer是immutable的? (不确定) 09/15 23:02
2F:→ ewn:你只是把j这个物件参考,参考到另一个Integer(50)而已 09/15 23:35