Java學習筆記-函數的調用

          Posted on 2006-06-27 17:26 多力宇揚 閱讀(239) 評論(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> 對于基本數據類型,傳遞的是數據的拷貝,對于引用類型,傳遞的是引用(首地址)的拷貝。
          主站蜘蛛池模板: 酒泉市| 南通市| 武隆县| 达拉特旗| 桐庐县| 扎鲁特旗| 鹿邑县| 天台县| 宝兴县| 修武县| 宿迁市| 广平县| 道真| 江津市| 成武县| 沙雅县| 米易县| 台安县| 南江县| 枞阳县| 镇雄县| 正镶白旗| 湄潭县| 江华| 衡山县| 和田县| 长白| 武安市| 黄山市| 东至县| 微山县| 玉环县| 余姚市| 葫芦岛市| 清苑县| 石嘴山市| 太保市| 弥勒县| 松阳县| 大同县| 浏阳市|