作者tzk28419 (甲鸟)
看板java
标题[问题] 新手程式流程问题
时间Sat May 25 19:21:02 2013
麻烦各位了
今天脑子打结
有关这个程式的输出值
public class Student{
public int id;
}
public static void change(Student x){
x.id=102;
}
public static void main (String[] args){
Student s1=new Student();
s1.id=101;
change(s1);
System.out.println(s1.id);
}
如果Java中全部都是call by value来看的话
印出的结果应该是101才对
可是为什麽答案是102呢?
而且在x.id=102;前面多加x=new Student();就会和我起先想的一样是101
这两者我以後要如何分别呢?
流程是怎样跑的?
--
Sent from my iPhone
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.42.18.206
1F:→ tails32100:印象中Java除了基本型态外,物件都是call by reference 05/25 19:31
2F:推 LPH66:Java 的 "全部cbv" 在物件形态时是 call by value (of ref) 05/25 20:33
3F:→ LPH66:也就是 cbv 的是 s1 这个 ref 本身而不是 s1 所参照的物件 05/25 20:35
4F:→ LPH66:对於那个物件来说的话这样的效果正是一楼提到的 cbr 05/25 20:36
5F:→ adrianshum:一楼你的印象出错 05/25 23:00
6F:→ tails32100:出错正是学习的好机会 :) 05/25 23:14
7F:→ tails32100:只是LP大的说明 其实小弟也是看不大懂Orz 05/25 23:16
9F:推 coldheaven:我的eclipse 会说 Duplicate local variable x 05/26 13:05
10F:→ coldheaven:不给我在x.id=102;前面多加x=new Student(); 05/26 13:06
11F:→ DeathWatch:要先搞懂变数与物件在档案里的位置 05/26 13:23
12F:→ DeathWatch: 记忆体 05/26 13:26