看板java
标 题Re: [问题] 请教传值呼叫(call by valu)的问题
发信站摩卡小筑 (Tue Feb 21 19:49:26 2006)
转信站ptt!ctu-reader!ctu-gate!news.nctu!news.ntu!bbs.ee.ntu!zoonews.ee.ntu!L
※ 引述《[email protected]》之铭言:
> 小弟在书上看到Call by value的一个范例,有两个问题想请教板友们...
> 先附上程式码:
> 1 class
> 2 {
> 3 public static void main(String args[])
> 4 {
> 5 int x=10;
> 6 System.out.println("呼叫process方法前,x的值为" +x);
> 7 process(x);
> 8 System.out.println("呼叫process方法後,x的值为" +x);
> 9 }
> 10 static void process(int y)
> 11 {
> 12 y+=10;
> 13 System.out.println("process这方法中的 y =" +y);
> 14 }
> 15 }
> 执行结果:
> 呼叫process方法前,x的值为 10
> process这方法中的 y =20
> 呼叫process方法後,x的值为 10
> 小弟的问题:
> 为何排序不是"process这方法中的 y =20"在最後面,
> 而是"呼叫process方法後,x的值为 10"在最後面呢?
> 另外,第七行为process(x),第十行为process(int y),
> 一个是x,一个是y,为什麽x会传给process(int y)呢?两者有什麽关系吗?
首先你知道什麽就做call by value 和 call by address嘛?
这两个你必须先查清楚(JAVA和C#用法与C++有点不一样..这个要分清楚)
首先这是个call By value方始呼叫副程式
而x和y事扮演actual 和 formal (详见程式语言XD)
因为解释起来也是文诌诌 所以酱说好了
当执行process(x)时 他只是把X的值10"复制"给Y
同时!
执行权就交给副程式static void process(int y)
当Y加10印出来20完後..执行完毕
执行全会再度交回得主程式..也就是有被冠上main的那只
我想你会认知错误可能是身受"C语言的结构循序化"
不过..C语言也有副程式说..
总之..你必须买本书
先把前几张读完
在范例去学习..不久之後无师自通(..当然..有老师更快)
--
┌───曾经有人对我说...
│ 在悲伤的对岸 据说可以找到微笑──┐
│ 好不容易到达後 │
└──我只找到失落.... ──For KARU
--
※ Origin: 摩卡小筑 <moca.csie.chu.edu.tw>
◆ From: 218-168-205-79.dynamic.hinet.net