BloveSaga

          在希臘帕爾納斯山南坡上,有一個馳名世界的戴爾波伊神托所,在它的入口處的巨石上赫然銹刻著這樣幾個大字: 認識你自己!

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            34 隨筆 :: 12 文章 :: 122 評論 :: 0 Trackbacks
          ~~~~~~~~~~~~~~~~~~~~~~~~~~函數的調用~~~~~~~~~~~~~~~~~~~~
          1> 在java中,傳參時,都是以傳值的形式驚行。
          2> 對于基本數據類型,傳遞的是數據的拷貝,對于引用類型,傳遞的引用的拷貝。
          3> 當我們在打印一個對象的時候,比如System.out.println(pt);,它會自動調用類的toString()方法
          ?? ,所以建議在所有的子類中重寫toString()方法。
          我們寫一個函數用來交換兩個變量(x,y)的值.
          ?code:
          class StringTest
          {
          ?public static void change(int x, int y)
          ?{
          ??x=x+y;
          ??y=x-y;
          ??x=x-y;
          ?}
          ?/*
          ?public static void change(int[] num)
          ?{
          ??num[0]=num[0]+num[1];
          ??num[1]=num[0]-num[1];
          ??num[0]=num[0]-num[1];
          ?}
          ?public static void change(Point pt)
          ?{
          ??pt.x=pt.x+pt.y;
          ??pt.y=pt.x-pt.y;
          ??pt.x=pt.x-pt.y;
          ?}
          ?*/
          ?public static void main(String[] args)
          ?{
          ?int x=3;
          ?int y=4;
          ?change(3,4);
          ?System.out.println("x="+x+","+"y="+y);
          ?}
          我們期望的輸出結果是 x=4,y=3 然后你運行后發現結果為x=3,y=4,并沒有達到我們的要求,為什么呢?那是因為對于基本數據類型,傳遞的是數據的拷貝,對于引用類型,傳遞的是引用(首地址)的拷貝。看看下面的內存圖解應該你就能看出來了.看看引用類型怎么來實現:


          code:
          class StringTest
          {
          ?/*
          ?public static void change(int x, int y)
          ?{
          ??x=x+y;
          ??y=x-y;
          ??x=x-y;
          ?}
          ?*/
          ?public static void change(int[] num)
          ?{
          ??num[0]=num[0]+num[1];
          ??num[1]=num[0]-num[1];
          ??num[0]=num[0]-num[1];
          ?}
          ?public static void change(Point pt)
          ?{
          ??pt.x=pt.x+pt.y;
          ??pt.y=pt.x-pt.y;
          ??pt.x=pt.x-pt.y;
          ?}
          ?public static void main(String[] args)
          ?{
          ??/*
          ?? int x=3;
          ?? int y=4;
          ?? change(3,4);
          ?? System.out.println("x="+x+","+"y="+y);
          ?? */
          ?? int[] num=new int[]{3,4};
          ?? change(num);
          ?? System.out.println("x="+num[0]+","+"y="+num[1]);
          ??
          ?? Point pt=new Point();
          ?? pt.x=3;
          ?? pt.y=4;
          ?? change(pt);
          ?? System.out.println("x="+pt.x+","+"y="+pt.y);?
          ?}
          class Point
          {
          ?int x,y;?
          }
          再看看引用類型的內存變化圖:
          以上說明了在Java中函數的調用:
          a> 在Java中,傳參時,都是以傳值的方式進行。
          b> 對于基本數據類型,傳遞的是數據的拷貝,對于引用類型,傳遞的是引用(首地址)的拷貝。
          posted on 2006-06-05 04:19 藍色Saga 閱讀(135) 評論(0)  編輯  收藏 所屬分類: Basic Study for JAVA
          主站蜘蛛池模板: 巍山| 文化| 柳江县| 射阳县| 江津市| 肃宁县| 平顶山市| 宽甸| 东乡县| 南漳县| 郑州市| 离岛区| 岳池县| 九龙坡区| 台中市| 清镇市| 邵阳县| 辉县市| 康保县| 定结县| 天峨县| 佳木斯市| 梨树县| 通海县| 鹤峰县| 鄯善县| 吴川市| 塘沽区| 钦州市| 和田县| 泗洪县| 湘潭县| 叶城县| 乾安县| 江陵县| 泌阳县| 浦县| 桐柏县| 枣庄市| 沛县| 霸州市|