05_Java基礎語法_第5天(方法)_講義_第1頁
05_Java基礎語法_第5天(方法)_講義_第2頁
05_Java基礎語法_第5天(方法)_講義_第3頁
05_Java基礎語法_第5天(方法)_講義_第4頁
05_Java基礎語法_第5天(方法)_講義_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

傳智播客專注于Java、.Net和Php、網(wǎng)頁平面設計工程師的培訓第5天 Java基礎語法今日內(nèi)容介紹u 方法第1章 方法1.1 方法概述在我們的日常生活中,方法可以理解為要做某件事情,而采取的解決辦法。如:小明同學在路邊準備坐車來學校學習。這就面臨著一件事情(坐車到學校這件事情)需要解決,解決辦法呢?可采用坐公交車或坐出租車的方式來學校,那么,這種解決某件事情的辦法,我們就稱為方法。在java中,方法就是用來完成解決某件事情或?qū)崿F(xiàn)某個功能的辦法。方法實現(xiàn)的過程中,會包含很多條語句用于完成某些有意義的功能通常是處理文本,控制輸入或計算數(shù)值。我們可以通過在程序代碼中引用方法名稱和所需的參數(shù),實現(xiàn)在該程序中執(zhí)行(或稱調(diào)用)該方法。方法,一般都有一個返回值,用來作為事情的處理結果。1.2 方法的語法格式在Java中,聲明一個方法的具體語法格式如下:修飾符 返回值類型 方法名(參數(shù)類型 參數(shù)名1,參數(shù)類型 參數(shù)名2,) 執(zhí)行語句 return 返回值;對于上面的語法格式中具體說明如下:l 修飾符:方法的修飾符比較多,有對訪問權限進行限定的,有靜態(tài)修飾符static,還有最終修飾符final等,這些修飾符在后面的學習過程中會逐步介紹l 返回值類型:用于限定方法返回值的數(shù)據(jù)類型l 參數(shù)類型:用于限定調(diào)用方法時傳入?yún)?shù)的數(shù)據(jù)類型l 參數(shù)名:是一個變量,用于接收調(diào)用方法時傳入的數(shù)據(jù)l return關鍵字:用于結束方法以及返回方法指定類型的值l 返回值:被return語句返回的值,該值會返回給調(diào)用者需要特別注意的是,方法中的“參數(shù)類型 參數(shù)名1,參數(shù)類型 參數(shù)名2”被稱作參數(shù)列表,它用于描述方法在被調(diào)用時需要接收的參數(shù),如果方法不需要接收任何參數(shù),則參數(shù)列表為空,即()內(nèi)不寫任何內(nèi)容。方法的返回值必須為方法聲明的返回值類型,如果方法中沒有返回值,返回值類型要聲明為void,此時,方法中return語句可以省略。接下來通過一個案例來演示方法的定義與使用,如下圖所示。MethodDemo01.javapublic class MethodDemo01 public static void main(String args) int area = getArea(3, 5); / 調(diào)用 getArea方法System.out.println( The area is + area);/ 下面定義了一個求矩形面積的方法,接收兩個參數(shù),其中x為高,y為寬public static int getArea(int x, int y) int temp = x * y; / 使用變量temp記住運算結果return temp; / 將變量temp的值返回運行結果如下圖所示。圖1-1 運行結果在上述代碼中,定義了一個getArea()方法用于求矩形的面積,參數(shù)x和y分別用于接收調(diào)用方法時傳入的高和寬,return語句用于返回計算所得的面積。在main()方法中通過調(diào)用getArea()方法,獲得矩形的面積,并將結果打印。1.3 方法調(diào)用圖解接下來通過一個圖例演示getArea()方法的整個調(diào)用過程,如下圖所示。圖1-2 getArea()方法的調(diào)用過程從上圖中可以看出,在程序運行期間,參數(shù)x和y相當于在內(nèi)存中定義的兩個變量。當調(diào)用getArea()方法時,傳入的參數(shù)3和5分別賦值給變量x和y,并將x*y的結果通過return語句返回,整個方法的調(diào)用過程結束,變量x和y被釋放。1.4 方法定義練習分別定義如下方法:定義無返回值無參數(shù)方法,如打印3行,每行3個*號的矩形定義有返回值無參數(shù)方法,如鍵盤錄入得到一個整數(shù)定義無返回值有參數(shù)方法,如打印指定M行,每行N個*號的矩形定義有返回值有參數(shù)方法,如求三個數(shù)的平均值l 無返回值無參數(shù)方法,如打印3行,每行3個*號的矩形public static void printRect()/打印3行星for (int i=0; i3; i+) /System.out.println(*); 相當于是打印3顆星,換行/每行打印3顆星for (int j=0; j3; j+) System.out.print(*); / *System.out.println();l 有返回值無參數(shù)方法,如鍵盤錄入得到一個整數(shù)public static int getNumber()Scanner sc = new Scanner(System.in);int number = sc.nextInt();return number;l 無返回值有參數(shù)方法,如打印指定M行,每行N個*號的矩形public static void printRect2(int m, int n)/打印M行星for (int i=0; im; i+) /每行中打印N顆星for (int j=0; jn; j+) System.out.print(*); System.out.println();l 有返回值有參數(shù)方法,如求三個數(shù)的平均值public static double getAvg(double a, double b, double c) double result = (a+b+c)/3;return result;1.5 方法的重載我們假設要在程序中實現(xiàn)一個對數(shù)字求和的方法,由于參與求和數(shù)字的個數(shù)和類型都不確定,因此要針對不同的情況去設計不同的方法。接下來通過一個案例來實現(xiàn)對兩個整數(shù)相加、對三個整數(shù)相加以及對兩個小數(shù)相加的功能,具體實現(xiàn)如下所示。MethodDemo02.javapublic class MethodDemo02 public static void main(String args) / 下面是針對求和方法的調(diào)用int sum1 = add01(1, 2);int sum2 = add02(1, 2, 3);double sum3 = add03(1.2, 2.3);/ 下面的代碼是打印求和的結果System.out.println(sum1= + sum1);System.out.println(sum2= + sum2);System.out.println(sum3= + sum3);/ 下面的方法實現(xiàn)了兩個整數(shù)相加public static int add01(int x, int y) return x + y;/ 下面的方法實現(xiàn)了三個整數(shù)相加public static int add02(int x, int y, int z) return x + y + z;/ 下面的方法實現(xiàn)了兩個小數(shù)相加public static double add03(double x, double y) return x + y;運行結果如下圖所示。圖1-3 運行結果從上述代碼不難看出,程序需要針對每一種求和的情況都定義一個方法,如果每個方法的名稱都不相同,在調(diào)用時就很難分清哪種情況該調(diào)用哪個方法。為了解決這個問題,Java允許在一個類中定義多個名稱相同的方法,但是參數(shù)的類型或個數(shù)必須不同,這就是方法的重載。下面的三個方法互為重載關系l public static int add(int x,int y) 邏輯 /兩個整數(shù)加法l public static int add(int x,int y,int z) 邏輯 /三個整數(shù)加法l public static int add(double x,double y) 邏輯 /兩個小數(shù)加法接下來通過方法重載的方式進行修改,如下所示。MethodDemo03.javapublic class MethodDemo03 public static void main(String args) / 下面是針對求和方法的調(diào)用int sum1 = add(1, 2);int sum2 = add(1, 2, 3);double sum3 = add(1.2, 2.3);/ 下面的代碼是打印求和的結果System.out.println(sum1= + sum1);System.out.println(sum2= + sum2);System.out.println(sum3= + sum3);/ 下面的方法實現(xiàn)了兩個整數(shù)相加public static int add(int x, int y) return x + y;/ 下面的方法實現(xiàn)了三個整數(shù)相加public static int add(int x, int y, int z) return x + y + z;/ 下面的方法實現(xiàn)了兩個小數(shù)相加public static double add(double x, double y) return x + y;MethodDemo02.java的運行結果和MethodDemo03.java一樣,如下圖所示。圖1-4 運行結果上述代碼中定義了三個同名的add()方法,它們的參數(shù)個數(shù)或類型不同,從而形成了方法的重載。在main()方法中調(diào)用add()方法時,通過傳入不同的參數(shù)便可以確定調(diào)用哪個重載的方法,如add(1,2)調(diào)用的是兩個整數(shù)求和的方法。值得注意的是,方法的重載與返回值類型無關,它只有兩個條件,一是方法名相同,二是參數(shù)個數(shù)或參數(shù)類型不相同。1.5.1 重載的注意事項l 重載方法參數(shù)必須不同:參數(shù)個數(shù)不同,如method(int x)與method(int x,int y)不同參數(shù)類型不同,如method(int x)與method(double x)不同g參數(shù)順序不同,如method(int x,double y)與method(double x,int y)不同l 重載只與方法名與參數(shù)類型相關與返回值無關如void method(int x)與int method(int y)不是方法重載,不能同時存在l 重載與具體的變量標識符無關如method(int x)與method(int y)不是方法重載,不能同時存在1.5.2 參數(shù)傳遞參數(shù)傳遞,可以理解當我們要調(diào)用一個方法時,我們會把指定的數(shù)值,傳遞給方法中的參數(shù),這樣方法中的參數(shù)就擁有了這個指定的值,可以使用該值,在方法中運算了。這種傳遞方式,我們稱為參數(shù)傳遞。l 在這里,定義方法時,參數(shù)列表中的變量,我們稱為形式參數(shù)l 調(diào)用方法時,傳入給方法的數(shù)值,我們稱為實際參數(shù)我們看下面的兩段代碼,來明確下參數(shù)傳遞的過程:public class ArgumentsDemo01 public static void main(String args) int a=5;int b=10;change(a, b);/調(diào)用方法時,傳入的數(shù)值稱為實際參數(shù)System.out.println(a= + a);System.out.println(b= + b);public static void change(int a, int b)/方法中指定的多個參數(shù)稱為形式參數(shù)a=200;b=500;程序的運行結果如下:再看另一段代碼public class ArgumentsDemo02 public static void main(String args) int arr = 1, 2, 3 ;change(arr);/ 調(diào)用方法時,傳入的數(shù)值稱為實際參數(shù)for (int i = 0; i arr.length; i+) System.out.println(arri);public static void change(int arr) / 方法中指定的多個參數(shù)稱為形式參數(shù)for (int i = 0; i arr.length; i+) arri *= 2;程序的運行結果如下:1.5.3 參數(shù)傳遞圖解與結論通過上面的兩段程序可以得出如下結論:l 當調(diào)用方法時,如果傳入的數(shù)值為基本數(shù)據(jù)類型(包含String類型),形式參數(shù)的改變對實際參數(shù)不影響l 當調(diào)用方法時,如果傳入的數(shù)值為引用數(shù)據(jù)類型(String類型除外),形式參數(shù)的改變對實際參數(shù)有影響第2章 隨機點名器案例2.1 案例介紹隨機點名器,即在全班同學中隨機的打印出一名同學名字。要做的隨機點名器,它具備以下3個內(nèi)容:l 存儲所有同學姓名l 總覽全班同學姓名l 隨機點名其中一人,打印到控制臺2.2 案例需求分析在全班同學中隨機的打印出一名同學名字。我們對本案例進行分析,得出如下分析結果:1.存儲全班同學名字2.打印全班同學每一個人的名字3.在班級總人數(shù)范圍內(nèi),隨機產(chǎn)生一個隨機數(shù),查找該隨機數(shù)所對應的同學名字該案例須有以下3個內(nèi)容:l 存儲所有同學姓名l 總覽全班同學姓名l 隨機點名其中一人,打印到控制臺隨機點名器明確地分為了三個功能。如果將多個獨立功能的代碼寫到一起,則代碼相對冗長,我們可以針對不同的功能可以將其封裝到一個方法中,將完整獨立的功能分離出來。而在存儲同學姓名時,如果對每一個同學都定義一個變量進行姓名存儲,則會出現(xiàn)過多孤立的變量,很難一次性將全部數(shù)據(jù)持有。此時,我們可以使用數(shù)組解決多個數(shù)據(jù)的存儲問題。2.3 實現(xiàn)代碼步驟編寫CallName.java文件,完成程序的編寫。l main方法中調(diào)用三個獨立方法public static void main(String args) System.out.println(-隨機點名器-);/ 創(chuàng)建一個存儲多個同學名字的容器(數(shù)組)String students = new String3;/* * 1.存儲全班同學名字 */addStudentName(students);/* * 2.打印全班同學每一個人的名字 */printStudentName(students);/* * 3.獲取隨機點名到的學生姓名,并打印 */String randomName = randomStudentName(students);System.out.println(被點到名的同學是 : + randomName);l 1.存儲所有同學姓名/* * 1.存儲全班同學名字 * 創(chuàng)建一個存儲多個同學名字的容器(數(shù)組) * 鍵盤輸入每個同學的名字,存儲到容器中(數(shù)組) */public static void addStudentName(String students) /鍵盤輸入多個同學名字存儲到容器中Scanner sc = new Scanner(System.in);for (int i = 0; i students.length; i+) System.out.println(存儲第+i+個名稱:);studentsi = sc.next();上述方法中,通過鍵盤錄入,完成為指定數(shù)組元素賦值。方法定義時,將參數(shù)定義為字符串數(shù)組,用于接收存放的同學姓名。l 打印全班同學每一個人的名字/* * 2打印全班同學每一個人的名字 */public static void printStudentName(String students) /遍歷數(shù)組,得到每個同學名字for (int i = 0; i students.length; i+) String name = studentsi;/打印同學名字System.out.println(第+i+個學生名稱: + name);上述方法中,方法參數(shù)students數(shù)組中存儲了所有學生的姓名。通過遍歷將數(shù)組中的每一個元素訪問一遍,得到每一個同學名稱。l 3.獲取隨機點到的學生姓名/* * 3.在班級總人數(shù)范圍內(nèi),隨機產(chǎn)生一個隨機數(shù),返回隨機數(shù)位置上的學生姓名 */public static String randomStudentName(String students) /根據(jù)數(shù)組長度,獲取隨機索引int index = new Random().nextInt(students.length);/通過隨機索引從數(shù)組中獲取名稱String name = studentsindex;/返回隨機點到的名稱return name;上述方法中,通過隨機數(shù)類Random產(chǎn)生一個從0到數(shù)組長度的隨機索引。使用該索引獲取students數(shù)組中對應的值,便得到了全班同學的隨機姓名。第3章 庫存管理案例3.1 案例介紹現(xiàn)在,我們將原有的庫存管理案例,進行業(yè)務邏輯的封裝。將對下列功能進行方法封裝:l 打印庫存清單功能l 庫存商品數(shù)量修改功能l 退出程序功能3.2 案例需求分析管理員能夠進行的操作有3項(查看、修改、退出),我們可以采用(switch)菜單的方式來完成。-庫存管理-1.查看庫存清單2.修改商品庫存數(shù)量3.退出請輸入要執(zhí)行的操作序號: 每一項功能操作,我們采用方法進行封裝,這樣,可使程序的可讀性增強。選擇“1.查看庫存清單”功能,則控制臺打印庫存清單選擇“2.修改商品庫存數(shù)量”功能,則對每種商品庫存數(shù)進行更新選擇“3.退出”功能,則退出庫存管理,程序結束3.3 實現(xiàn)代碼步驟編寫代碼Demo庫存管理.java,完成如下功能:l 功能菜單/* * 庫存管理功能菜單 * return 管理員鍵盤輸入的功能操作序號 */public static int chooseFunction() System.out.println(-庫存管理-);System.out.println(1.查看庫存清單);System.out.println(2.修改商品庫存數(shù)量);System.out.println(3.退出);System.out.println(請輸入要執(zhí)行的操作序號:);/接收鍵盤輸入的功能選項序號Scanner sc = new Scanner(System.in); int choose = sc.nextInt();return choose;上述方法用來完成庫存管理功能菜單的顯示、接收管理員選擇的功能操作序號。這是完成了案例的第一步。接下來完成“查看、修改、退出”這三項功能。l 編寫main主方法,調(diào)用庫存管理功能菜單方法,與“查看、修改、退出”這三個方法。public static void main(String args) /記錄庫存商品信息/品牌型號String brands = new StringMacBookAir, ThinkpadT450;/尺寸大小double sizes = new double13.3, 14.0;/價格double prices = new double6988.88, 5999.99;/庫存?zhèn)€數(shù)int counts = new int0, 0;/通過while循環(huán)模擬管理員進行功能重復選擇操作while (true) /打印功能菜單操作,接收鍵盤輸入的功能選項序號int choose = chooseFunction();/執(zhí)行序號對應的功能switch (choose) case 1:/查看庫存清單printStore(brands, sizes, prices, counts);break;case 2:/修改商品庫存數(shù)量update(brands, counts);break;case 3:/退出exit();return;default:System.out.println(-);System.out.println(功能選擇有誤,請輸入正確的功能序號!);break;在主方法中,創(chuàng)建了5個數(shù)組,分別用來存儲商品的品牌型號、尺寸大小、價格、配置、庫存?zhèn)€數(shù),通過接收到的功能選項序號,進行switch語句判斷后,調(diào)用對應的功能方法。l 查看庫存清單功能/* * 查看庫存清單 * param brands 商品品牌型號 * param sizes 商品尺寸大小 * param prices 商品價格 * param counts 商品庫存?zhèn)€數(shù) */public static void printStore(String brands, double sizes, double prices, int counts) /統(tǒng)計總庫存?zhèn)€數(shù)、統(tǒng)計庫存總金額int totalCount = 0;double totalMoney = 0.0;for (int i = 0; i brands.length; i+) totalCount += countsi;totalMoney += countsi * pricesi;/列表頂部System.out.println(-查看庫存清單-);System.out.println(品牌型號尺寸價格庫存數(shù));/列表中部for (int i = 0; i brands.length; i+) System.out.println(brandsi+sizesi+pricesi+countsi);/列表底部System.out.println(-);System.out.println(總庫存數(shù):+totalCount); System.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論