Java學習筆記-函數的調用

          Posted on 2006-06-27 17:26 多力宇揚 閱讀(240) 評論(0)  編輯  收藏 所屬分類: Core Java
          ~~~~~~~~~~~~~~~~~~~~~~~~~~函數的調用~~~~~~~~~~~~~~~~~~~~
          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,并沒有達到我們的要求,為什么呢?那是因為對于基本數據類型,傳遞的是數據的拷貝,對于引用類型,傳遞的是引用(首地址)的拷貝??纯聪旅娴膬却鎴D解應該你就能看出來了.看看引用類型怎么來實現:

          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> 對于基本數據類型,傳遞的是數據的拷貝,對于引用類型,傳遞的是引用(首地址)的拷貝。
          主站蜘蛛池模板: 乌鲁木齐市| 桓仁| 侯马市| 泰宁县| 天柱县| 青海省| 新乡市| 临武县| 大邑县| 桐梓县| 洛川县| 万载县| 偏关县| 青铜峡市| 大埔区| 白玉县| 蕲春县| 辽中县| 嘉义市| 荣昌县| 安新县| 册亨县| 高碑店市| 靖远县| 太仆寺旗| 尼玛县| 松原市| 宁都县| 湖北省| 卫辉市| 封开县| 伽师县| 托里县| 台东市| 吐鲁番市| 伊吾县| 石林| 嵩明县| 西林县| 原阳县| 冀州市|