国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

[java學(xué)習(xí)筆記]java語言基礎(chǔ)概述之函數(shù)的定義和使用&函數(shù)傳值問題

2019-11-14 15:31:20
字體:
供稿:網(wǎng)友

1.函數(shù)

1.什么是函數(shù)?

  • 定義在類中具有特定功能的一段獨(dú)立小程序。
  • 函數(shù)也叫做方法

2.函數(shù)的格式

  • 修飾符   返回值類型    函數(shù)名(參數(shù)類型  形式參數(shù)1, 參數(shù)類型  形式參數(shù)2…) {

          執(zhí)行語句(函數(shù)體);

          return 返回值;

      }

返回值類型:函數(shù)運(yùn)行完成后輸出的數(shù)據(jù)類型。

參數(shù)類型:是形式參數(shù)的數(shù)據(jù)類型。

形式參數(shù):是一個(gè)變量,用于儲(chǔ)存調(diào)用函數(shù)時(shí)傳遞給函數(shù)的實(shí)際參數(shù)。

實(shí)際參數(shù):傳遞給形參的實(shí)際數(shù)據(jù)。

return:結(jié)束函數(shù),返回?cái)?shù)據(jù)給調(diào)用者的關(guān)鍵字。

返回值:該函數(shù)運(yùn)行后的結(jié)果,返回給調(diào)用者。

 

特殊情況:函數(shù)沒有具體的返回值。

       這時(shí)return后直接用分號(hào)結(jié)束。(return在最后一行可以省略)

       用void關(guān)鍵字作為返回值類型。

3.函數(shù)的特點(diǎn)

  • 定義函數(shù)可以將功能代碼進(jìn)行封裝
  • 便于對該功能進(jìn)行復(fù)用
  • 函數(shù)只有被調(diào)用才會(huì)執(zhí)行
  • 函數(shù)的出現(xiàn)提高了代碼的復(fù)用性
  • 對于函數(shù)沒有具體返回值的情況,返回值類型用關(guān)鍵字void表示,那么該函數(shù)中的return語句如果在最后一行,可以省略不寫
  • 注意:
  1. 函數(shù)中只能調(diào)用函數(shù),不能在函數(shù)中定義函數(shù),即函數(shù)不能嵌套調(diào)用
  2. 定義函數(shù)時(shí),函數(shù)的結(jié)果應(yīng)該返回給調(diào)用者,交由調(diào)用者處理
  3. 兩個(gè)明確:結(jié)果&參數(shù)

4.重載(overload)

函數(shù)的功能一樣,僅僅參與運(yùn)算的未知內(nèi)容不同時(shí),可以利用重載定義多個(gè)函數(shù),使用同一函數(shù)名,這樣方便閱讀,在調(diào)用時(shí),虛擬機(jī)通過參數(shù)列表的不同來區(qū)分這些函數(shù)。

  • 概念:

                 在同一個(gè)類中,允許存在一個(gè)以上的同名函數(shù),只要它們的參數(shù)個(gè)數(shù)或者參數(shù)類型不同即可。

  • 特點(diǎn):

                與返回值無關(guān),只看參數(shù)列表

  • 好處:

                方便與閱讀,優(yōu)化了程序設(shè)計(jì)

  • 示例:
public class Utill{        //返回兩個(gè)整數(shù)的和    public static int sum(int a, int b){        return a+b;    }    //返回兩個(gè)小數(shù)的和    public static double sum(double a, double b){        return a+b;    }    //返回三個(gè)整數(shù)的和    public static int sum(int a, int b, int c){        return a+b+c;    }}

 

不能這樣定義:因?yàn)樘摂M機(jī)不確定調(diào)用哪個(gè),只能通過參數(shù)列表的類型或個(gè)數(shù)進(jìn)行區(qū)分。

public class Util{        //返回兩個(gè)整數(shù)的和    public static int sum(int a, int b){        return a+b;    }    //返回兩個(gè)小數(shù)的和    public static double sum(int a, int b){        return a+b;    }}

 

 

2.函數(shù)傳值

    • java函數(shù)基本數(shù)據(jù)類型是傳值,引用數(shù)據(jù)類型是傳引用
    • 當(dāng)參數(shù)為引用時(shí),無論函數(shù)體內(nèi)進(jìn)行了何種操作,都不會(huì)改變實(shí)參對象的引用
    • 當(dāng)參數(shù)為引用時(shí),只有在函數(shù)體內(nèi)改變了對象的內(nèi)容時(shí),才會(huì)改變實(shí)參對象的內(nèi)容。

(一)基本數(shù)據(jù)類型:傳值,不會(huì)改變實(shí)參的值

public class Demo{    public static void main(String[] args) {                int a = 3,b = 4;        fun(a,b);        System.out.PRintln(a+","+b);    }    //試圖交換a和b的值    public static void fun(int a, int b){        int temp = a;        a = b;        b = temp;    }    }

 

運(yùn)行結(jié)果為3,4

分析:當(dāng)程序執(zhí)行到main函數(shù)時(shí),在棧內(nèi)存中就會(huì)多出一個(gè)main方法區(qū),里面有a=3和b=4兩個(gè)變量,接著執(zhí)行fun(a,b),又會(huì)在棧內(nèi)存中創(chuàng)建一個(gè)fun的方法區(qū),里面有a和b變量。接著把main方法的a和b變量賦值給了fun方法區(qū)的a和b變量,即fun方法區(qū)的a=3,b=4,然后在fun方法區(qū)中交換了fun方法區(qū)的a和b的值,即fun方法區(qū)的a=4,b=3,fun方法執(zhí)行完畢了,fun方法區(qū)被釋放。改變不了main方法區(qū)的a和b變量。

(二)對象類型參數(shù):傳引用,函數(shù)體內(nèi)改變形參引用,不會(huì)改變實(shí)參的引用,但是能改變實(shí)參的內(nèi)容。

public class FunDemo{    public static void main(String[] args) {                        Person p1 = new Person(10);        Person p2 = new Person(20);        System.out.println("before,p1.age:"+p1.age);        System.out.println("before,p2.age:"+p2.age);        ss(p1,p2);        System.out.println("after,p1.age:"+p1.age);        System.out.println("after,p1.age:"+p2.age);    }
    //試圖交換p1和p2的引用,和改變其中一個(gè)的age屬性值    public static void ss(Person p1, Person p2){        Person p = p1;        p1 = p2;        p2 = p;        p1.age = 30;    }}

 

運(yùn)行結(jié)果:

before,p1.age:10
before,p2.age:20
after,p1.age:10
after,p2.age:30

 

分析:當(dāng)運(yùn)行到Person p1 = new Person(10);時(shí),會(huì)在棧內(nèi)存中開辟一個(gè)新空間來儲(chǔ)存變量p1,在堆內(nèi)存中創(chuàng)建一個(gè)Person(10)的實(shí)例,p2同理。當(dāng)調(diào)用ss方法時(shí),又會(huì)在棧內(nèi)存中開辟新空間來存儲(chǔ)形式變量p1和p2,它們分別指向堆內(nèi)存中對應(yīng)實(shí)際參數(shù)所指向的Person實(shí)例,在ss方法內(nèi)部,交換的是形參的p1和p2的值,即交換了它們的指向。這時(shí)候,實(shí)參的指向并沒有改變。然后,改變形參p1所指向的實(shí)例的內(nèi)容,即改變了實(shí)參p2所指向的實(shí)例的內(nèi)容。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 东乡族自治县| 南昌县| 黄石市| 阳泉市| 南平市| 工布江达县| 青龙| 铅山县| 辉南县| 察哈| 万全县| 开江县| 盐亭县| 云霄县| 道真| 迭部县| 宁明县| 梁河县| 德阳市| 远安县| 合江县| 会同县| 连城县| 上杭县| 英山县| 宜黄县| 洞头县| 波密县| 贵港市| 清苑县| 安阳县| 常熟市| 化德县| 达孜县| 子长县| 宁河县| 新竹市| 宁河县| 寿光市| 巴彦县| 杭锦后旗|