国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【JAVASE】帶你了解的方法魅力

這篇具有很好參考價值的文章主要介紹了【JAVASE】帶你了解的方法魅力。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

【JAVASE】帶你了解的方法魅力,JAVASE,java,開發(fā)語言

?作者簡介:大家好,我是橘橙黃又青,一個想要與大家共同進步的男人????

??個人主頁:橘橙黃又青-CSDN博客

目標(biāo):

1. 掌握方法的定義以及使用
2. 掌握方法傳參
3. 掌握方法重載
4. 掌握遞歸

?廢話不多說,我們直接開始

??1.方法概念

1.1什么是方法(method)

方法就是一個代碼片段 . 類似于 C 語言中的 "函數(shù)" 。方法存在的意義 ( 不要背 , 重在體會 ):
1. 是能夠模塊化的組織代碼 ( 當(dāng)代碼規(guī)模比較復(fù)雜的時候 ).
2. 做到代碼被重復(fù)使用 , 一份代碼可以在多個位置使用 .
3. 讓代碼更好理解更簡單 .
4. 直接調(diào)用現(xiàn)有方法開發(fā) , 不必重復(fù)造輪子 .

?1.2 方法定義

方法語法格式:

// 方法定義
修飾符 返回值類型 方法名稱 ([ 參數(shù)類型 形參 ...]){
????????方法體代碼 ;
????????return 返回值 ;
}

?比如說:

實現(xiàn)一個函數(shù),檢測一個年份是否為閏年
public class Method{
    // 方法定義
    public static boolean isLeapYear(int year){
        if((0 == year % 4 && 0 != year % 100) || 0 == year % 400){
            return true;
        }else{
            return false;
        }
    }
}
注意事項
1. 修飾符:現(xiàn)階段直接使用 public static 固定搭配
2. 返回值類型:如果方法有返回值,返回值類型必須要與返回的實體類型一致,如果沒有返回值,必須寫成void
3. 方法名字:采用小駝峰命名
4. 參數(shù)列表:如果方法沒有參數(shù), () 中什么都不寫,如果有參數(shù),需指定參數(shù)類型,多個參數(shù)之間使用逗號隔開
5. 方法體:方法內(nèi)部要執(zhí)行的語句
6. 在java當(dāng)中,方法必須寫在類當(dāng)中
7. java 當(dāng)中,方法不能嵌套定義
8. java 當(dāng)中,沒有方法聲明一說

1.3 方法調(diào)用的執(zhí)行過程

方法調(diào)用過程
調(diào)用方法 --- > 傳遞參數(shù) --- > 找到方法地址 --- > 執(zhí)行被調(diào)方法的方法體 --- > 被調(diào)方法結(jié)束返回 --- > 回到主調(diào)方法繼續(xù)往下 執(zhí)行。
【JAVASE】帶你了解的方法魅力,JAVASE,java,開發(fā)語言

注意事項

  1. 定義方法的時候, 不會執(zhí)行方法的代碼. 只有調(diào)用的時候才會執(zhí)行.
  2. 一個方法可以被多次調(diào)用.

?比如說:

計算 1! + 2! + 3! + 4! + 5!
代碼:
public class TestMethod {
    public static void main(String[] args) {
        int sum = 0;
        for (int i = 1; i <= 5; i++) {
            sum += fac(i);
        }
        System.out.println("sum = " + sum);
    }
    public static int fac(int n) {
        System.out.println("計算 n 的階乘中n! = " + n);
        int result = 1;
        for (int i = 1; i <= n; i++) {
            result *= i;
        }
        return result;
    }
}

輸出結(jié)果:

計算 n 的階乘中 n ! = 1
計算 n 的階乘中 n ! = 2
計算 n 的階乘中 n ! = 3
計算 n 的階乘中 n ! = 4
計算 n 的階乘中 n ! = 5
sum = 153
使用方法 , 避免使用二重循環(huán) , 讓代碼更簡單清晰 .

1.4 實參和形參的關(guān)系(重要)

Java中方法的形參就相當(dāng)于sum函數(shù)中的自變量n,用來接收sum函數(shù)在調(diào)用時傳遞的值的。形參的名字可以隨意取,對方法都沒有任何影響,形參只是方法在定義時需要借助的一個變量,用來保存方法在調(diào)用時傳遞過來的值。

比如說:

public static int getSum(int N){ // N是形參
    return (1+N)*N / 2;
}
getSum(10); // 10是實參,在方法調(diào)用時,形參N用來保存10
getSum(100); // 100是實參,在方法調(diào)用時,形參N用來保存100
再比如:
public static int add(int a, int b){
return a + b;
}
add(2, 3); // 2和3是實參,在調(diào)用時傳給形參a和b

【JAVASE】帶你了解的方法魅力,JAVASE,java,開發(fā)語言

注意: Java 中,實參的值永遠(yuǎn)都是拷貝到形參中,形參和實參本質(zhì)是兩個實體
代碼示例 : 交換兩個整型變量
public class TestMethod {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        swap(a, b);
        System.out.println("main: a = " + a + " b = " + b);
    }
    public static void swap(int x, int y) {
        int tmp = x;
        x = y;
        y = tmp;
        System.out.println("swap: x = " + x + " y = " + y);
    }
}

輸出結(jié)果:

swap : x = 20 y = 10
main : a = 10 b = 20
可以看到,在 swap 函數(shù)交換之后,形參 x y 的值發(fā)生了改變,但是 main 方法中 a b 還是交換之前的值,即沒有交換成功。

?原因分析

實參 a b main 方法中的兩個變量,其空間在 main 方法的棧 ( 一塊特殊的內(nèi)存空間 ) 中,而形參 x y swap 方法中的兩個變量,x y 的空間在 swap 方法運行時的棧中,因此:實參 a b 與 形參 x y 是兩個沒有任何關(guān)聯(lián)性的變量, swap 方法調(diào)用時,只是將實參 a b 中的值拷貝了一份傳遞給了形參 x y ,因此對形參 x y 操作不會對實參 a b產(chǎn)生任何影響。
解決辦法 : 傳引用類型參數(shù) ( 例如數(shù)組來解決這個問題 )
public class TestMethod {
    public static void main(String[] args) {
        int[] arr = {10, 20};
        swap(arr);
        System.out.println("arr[0] = " + arr[0] + " arr[1] = " + arr[1]);
    }
    public static void swap(int[] arr) {
        int tmp = arr[0];
        arr[0] = arr[1];
        arr[1] = tmp;
    }
}

運行結(jié)果:

arr [ 0 ] = 20 arr [ 1 ] = 10

1.5 沒有返回值的方法

?方法的返回值是可選的. 有些時候可以沒有的,沒有時返回值類型必須寫成void

代碼示例

class Test {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        print(a, b);
    }
    public static void print(int x, int y) {
        System.out.println("x = " + x + " y = " + y);
    }
}

??2. 方法重載

2.1 為什么需要方法重載

public class TestMethod {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int ret = add(a, b);
        System.out.println("ret = " + ret);
        double a2 = 10.5;
        double b2 = 20.5;
        double ret2 = add(a2, b2);
        System.out.println("ret2 = " + ret2);
    }
    public static int add(int x, int y) {
        return x + y;
    }
}
// 編譯出錯
Test . java : 13 : 錯誤 : 不兼容的類型 : double 轉(zhuǎn)換到 int 可能會有損失
double ret2 = add ( a2 , b2 );
????????????????^

由于參數(shù)類型不匹配, 所以不能直接使用現(xiàn)有的 add 方法.?

一種比較簡單粗暴的解決方法如下: ?

public class TestMethod {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int ret = addInt(a, b);
        System.out.println("ret = " + ret);
        double a2 = 10.5;
        double b2 = 20.5;
        double ret2 = addDouble(a2, b2);
        System.out.println("ret2 = " + ret2);
    }
    public static int addInt(int x, int y) {
        return x + y;
    }
    public static double addDouble(double x, double y) {
        return x + y;
    }
}
上述代碼確實可以解決問題,但不友好的地方是:需要提供許多不同的方法名,而取名字本來就是讓人頭疼的事情。那能否將所有的名字都給成 add 呢?
答案是可以的。

2.2 方法重載概念

?在自然語言中,經(jīng)常會出現(xiàn)一詞多義的現(xiàn)象,比如:好人”

【JAVASE】帶你了解的方法魅力,JAVASE,java,開發(fā)語言【JAVASE】帶你了解的方法魅力,JAVASE,java,開發(fā)語言

在自然語言中,一個詞語如果有多重含義,那么就說該詞語被重載了,具體代表什么含義需要結(jié)合具體的場景。在Java 中方法也是可以重載的。

?Java中,如果多個方法的名字相同,參數(shù)列表不同,則稱該幾種方法被重載了。

public class TestMethod {
    public static void main(String[] args) {
        add(1, 2); // 調(diào)用add(int, int)
        add(1.5, 2.5); // 調(diào)用add(double, double)
        add(1.5, 2.5, 3.5); // 調(diào)用add(double, double, double)
    }
    public static int add(int x, int y) {
        return x + y;
    }
    public static double add(double x, double y) {
        return x + y;
    }
    public static double add(double x, double y, double z) {
        return x + y + z;
    }
}

分析:

【JAVASE】帶你了解的方法魅力,JAVASE,java,開發(fā)語言

注意:

1. 方法名必須相同
2. 參數(shù)列表必須不同 ( 參數(shù)的個數(shù)不同、參數(shù)的類型不同、類型的次序必須不同 )
3. 與返回值類型是否相同無關(guān)
4. 編譯器在編譯代碼時,會對實參類型進行推演,根據(jù)推演的結(jié)果來確定調(diào)用哪個方法
// 注意:兩個方法如果僅僅只是因為返回值類型不同,是不能構(gòu)成重載的。

?2.3 方法簽名

在同一個作用域中不能定義兩個相同名稱的標(biāo)識符。比如:方法中不能定義兩個名字一樣的變量,那 為什么類中就 可以定義方法名相同的方法呢?
方法簽名即:經(jīng)過編譯器編譯修改過之后方法最終的名字。具體方式: 方法全路徑名 + 參數(shù)列表 + 返回值類型,構(gòu)成 方法完整的名字。
比如說:
public class TestMethod {
    public static int add(int x, int y){
        return x + y;
    }
    public static double add(double x, double y){
        return x + y;
    }
    public static void main(String[] args) {
        add(1,2);
        add(1.5, 2.5);
    }
}
上述代碼經(jīng)過編譯之后,然后使用 JDK 自帶的 javap 反匯編工具查看,具體操作:
1. 先對工程進行編譯生成 .class 字節(jié)碼文件
2. 在控制臺中進入到要查看的 .class 所在的目錄
3. 輸入: javap -v 字節(jié)碼文件名字即可

【JAVASE】帶你了解的方法魅力,JAVASE,java,開發(fā)語言?也就是說:由于參數(shù)列表不同,編譯器會把他們定義成不同的方法。

?方法簽名中的一些特殊符號說明:

特殊字符
數(shù)據(jù)類型
V
void
Z
boolean
B
byte
C
char
S
short
I
int
J
long
F
float
D
double
[
數(shù)組 ( [ 開頭,配合其他的特殊字符,表述對應(yīng)數(shù)據(jù)類型的數(shù)組,幾個 [ 表述幾維數(shù)組 )
L
引用類型,以 L 開頭,以 ; 結(jié)尾,中間是引用類型的全類名

??3. 遞歸

?【JAVASE】帶你了解的方法魅力,JAVASE,java,開發(fā)語言

自身中又包含了自己 ,該種思想在數(shù)學(xué)和編程中非常有用,因為有些時候,我們 遇到的問題直接并不好解決,但是發(fā)現(xiàn)將原問題拆分成其子問題之后,子問題與原問題有相同的解法,等子問題解
決之后,原問題就迎刃而解了 。

遞歸的必要條件: ?

1. 將原問題劃分成其子問題,注意:子問題必須要與原問題的解法相同
2. 遞歸出口

比如說:

遞歸求 N 的階乘文章來源地址http://www.zghlxwxcb.cn/news/detail-844431.html

public static void main(String[] args) {
    int n = 5;
    int ret = factor(n);
    System.out.println("ret = " + ret);
}
public static int factor(int n) {
    if (n == 1) {
        return 1;
    }
    return n * factor(n - 1); // factor 調(diào)用函數(shù)自身
}
// 執(zhí)行結(jié)果
ret = 120
關(guān)于 "調(diào)用棧"
方法調(diào)用的時候, 會有一個 "棧" 這樣的內(nèi)存空間描述當(dāng)前的調(diào)用關(guān)系. 稱為調(diào)用棧.
每一次的方法調(diào)用就稱為一個 "棧幀", 每個棧幀中包含了這次調(diào)用的參數(shù)是哪些, 返回到哪里繼續(xù)執(zhí)行等信息. 后面我們借助 IDEA 很容易看到調(diào)用棧的內(nèi)容.
總體來說:java遞歸和c語言是一樣的
今天的分享就到這里了,感謝觀看。

到了這里,關(guān)于【JAVASE】帶你了解的方法魅力的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【JAVASE】帶你了解面向?qū)ο笕筇匦灾唬ǘ鄳B(tài))

    【JAVASE】帶你了解面向?qū)ο笕筇匦灾唬ǘ鄳B(tài))

    ?作者簡介:大家好,我是橘橙黃又青,一個想要與大家共同進步的男人???? ??個人主頁:再無B~U~G-CSDN博客 多態(tài)的概念:通俗來說,就是多種形態(tài), 具體點就是去完成某個行為,當(dāng)不同的對象去完成時會產(chǎn)生出不同 的狀 態(tài)。 總的來說:同一件事情,發(fā)生在不同對象

    2024年04月14日
    瀏覽(91)
  • Java開發(fā) - 帶你了解集群間的相互調(diào)用,你還在等什么?

    Java開發(fā) - 帶你了解集群間的相互調(diào)用,你還在等什么?

    目錄 前言 導(dǎo)讀 項目準(zhǔn)備 集群準(zhǔn)備 父工程引入子項目 服務(wù)調(diào)用方HelloService準(zhǔn)備 pom文件 yml文件 Controller文件 服務(wù)提供方HelloWorld準(zhǔn)備? pom文件 yml文件 Controller文件? 運行此兩個工程? hello_world組集群 集群調(diào)用測試 RestTemplate換成Dubbo行不行,怎么換 兩個pom文件引入依賴 ?兩個啟

    2024年02月09日
    瀏覽(23)
  • 帶你了解大語言模型的前世今生

    本文分享自華為云社區(qū)《大語言模型的前世今生》,作者: 碼上開花_Lancer 。 大規(guī)模語言模型(Large Language Models,LLM),也稱大規(guī)模語言模型或大型語言模型,是一種由包含數(shù)百億以上參數(shù)的深度神經(jīng)網(wǎng)絡(luò)構(gòu)建的語言模型,使用自監(jiān)督學(xué)習(xí)方法通過大量無標(biāo)注文本進行訓(xùn)練。

    2024年02月05日
    瀏覽(24)
  • 探索高級UI、源碼解析與性能優(yōu)化,了解開源框架及Flutter,助力Java和Kotlin筑基,揭秘NDK的魅力!

    鏈接: https://pan.baidu.com/s/13cR0Ip6lzgFoz0rcmgYGZA?pwd=y7hp 提取碼: y7hp 復(fù)制這段內(nèi)容后打開百度網(wǎng)盤手機App,操作更方便哦 --來自百度網(wǎng)盤超級會員v4的分享 ??【01】Java筑基:全方位指南帶你從入門到進階,打造堅實的Java基礎(chǔ)!?? ??【02】Kotlin:深入淺出,揭示Kotlin的奇妙之處,讓

    2024年02月12日
    瀏覽(13)
  • 1分鐘帶你了解golang(go語言)

    Golang:也被稱為Go語言,是一種開源的編程語言。由Google的Robert Griesemer、Rob Pike和Ken Thompson于2007年開始設(shè)計,2009年11月正式對外發(fā)布。(被譽為21世紀(jì)的C語言) 像python一樣的優(yōu)雅,有c一樣的性能 天生的協(xié)程 編譯快 … 編輯器: goland(推薦) 下載鏈接 vscode 官網(wǎng):golang.goog

    2024年02月03日
    瀏覽(23)
  • 不知道該學(xué)那一個語言?一文帶你了解三門語言

    名字:阿玥的小東東 學(xué)習(xí):Python。正在學(xué)習(xí)c++ 主頁:阿玥的小東東 目錄 粉絲留言,回答問題 1.首先,初步了解?

    2024年02月21日
    瀏覽(17)
  • 【JavaSE專欄48】Java集合類ArrayList解析,這個動態(tài)數(shù)組數(shù)據(jù)結(jié)構(gòu)你了解嗎?

    【JavaSE專欄48】Java集合類ArrayList解析,這個動態(tài)數(shù)組數(shù)據(jù)結(jié)構(gòu)你了解嗎?

    作者主頁 :Designer 小鄭 作者簡介 :3年JAVA全棧開發(fā)經(jīng)驗,專注JAVA技術(shù)、系統(tǒng)定制、遠(yuǎn)程指導(dǎo),致力于企業(yè)數(shù)字化轉(zhuǎn)型,CSDN學(xué)院、藍(lán)橋云課認(rèn)證講師。 主打方向 :Vue、SpringBoot、微信小程序 本文講解了 Java 中集合類 ArrayList 的語法、使用說明和應(yīng)用場景,并給出了樣例代碼。

    2024年02月16日
    瀏覽(27)
  • 【C語言】-- 一篇帶你了解指針,內(nèi)存,解引用

    【C語言】-- 一篇帶你了解指針,內(nèi)存,解引用

    目錄 1、什么是指針? 1.1 內(nèi)存 1.2 指針變量 二、指針和指針類型 1、指針類型 2、指針+整數(shù) 3、指針的解引用 三、野指針 1、野指針成因 (1) 指針未初始化 (2) 指針越界訪問 (3) 指針指向的空間釋放 2、如何規(guī)避野指針 四、指針運算 1、指針-指針 ? ? ? ?本篇文章我們來了解C語

    2024年02月16日
    瀏覽(33)
  • 什么是VHDL?一文帶你了解VHDL語言

    什么是VHDL?一文帶你了解VHDL語言

    基于FPGA的SOC在嵌入式系統(tǒng)應(yīng)用越來越廣了,比較流行的硬件描述語言有兩種Verilog HDL/VHDL,均為IEEE標(biāo)準(zhǔn)。VHDL如果有C語言基礎(chǔ)的話就會比較容易上手。而VHDL語言則需要Ada編程基礎(chǔ)。另外VHDL語言具有大量成熟的模塊,從某種角度說VHDL更具生命力。 VHDL 的歷史 VHDL 的 英 文 全 名

    2024年02月05日
    瀏覽(34)
  • 【Mysql】一篇帶你了解數(shù)據(jù)定義,操作和查詢語言

    【Mysql】一篇帶你了解數(shù)據(jù)定義,操作和查詢語言

    目錄 數(shù)據(jù)定義語言DDL(Data Definition Language) 一.對數(shù)據(jù)庫的操作 二.對數(shù)據(jù)表的操作 數(shù)據(jù)操作語言DML(Data Manipulation Language) 一.添加 insert into 二.刪除? delete 三.修改? update 數(shù)據(jù)查詢語言DQL(Data Query Language) 一.查詢 select 二. 1.between ... and ...(在....之間) 2.in, exists

    2024年02月12日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包