Java-第3課-方法. 在上一個單元 - Medium
文章推薦指數: 80 %
例如字串的length方法會回傳int,subString方法會回傳String。
但方法也是可以不回傳資料的。
在第0課有提到「main方法」方法是程式的進入點。
首先 ...
GetunlimitedaccessOpeninappHomeNotificationsListsStoriesWritePublishedin新手工程師的程式教室Java-第3課-方法在上一個單元,我們使用「System.out.println」這樣的程式指令,將資料輸出在畫面上。
而程式指令是為了讓初學者較能理解而暫時在文章中使用的名詞。
正式名稱叫做「方法(method)」,或者函數、函式(function)。
本篇會介紹適用於字串的方法,讓大家體會方法是如何使用的。
一、什麼是方法在物件導向程式語言中,程式的執行結果是「方法」作用在「物件」(資料)上而產生的。
例如現在有一塊麵團(物件),你用擀麵棍去滾,得到的結果是扁掉的麵團。
如果放進爐子烘烤,則會得到麵包。
換言之,方法是對物件進行操作的手段。
二、字串的拼湊當要宣告一個字串,我們會類似這樣子做。
String變數名稱=值;StringfirstName="Vincent";StringlastName="Zheng";如果要將字串拼湊起來,使用「+」號即可。
StringfullName=firstName+lastName;拼湊字串並輸出三、字串的基本操作方法使用「方法」的程式語法,可以歸納成以下幾種:物件.方法();物件.方法(參數...);方法();方法(參數...);上面的「參數」,是指一起參與這次方法操作的其他資料,執行完後會得到某種結果。
例如在製作麵包麵團這個步驟,鍋子裡會先有麵粉、蛋、砂糖等材料的混合物。
接下來在攪拌的過程中加入一些水,水就類似參數的角色。
而得到的結果是:做好的麵團!也就是說,攪拌這個動作(方法),配合著水(參數)作用在混合物(物件)上,得到了麵團(執行結果)。
讓我們看看一些字串方法的範例Stringname="VincentZheng";//字串的長度intnameLength=name.length();//字元第一次出現在字串的位置intspaceIndex=name.indexOf('');//擷取字串StringthreeLetters=name.substring(0,3);StringfirstName=name.substring(0,spaceIndex);StringlastName=name.substring(spaceIndex+1,nameLength);length()取得字串的長度,也就是包含幾個字。
indexOf(字元)取得某個字元第一次出現在字串中的位置(索引,index)。
需要1個字元作為參數。
也就是你想查找的字元。
注意位置是從0開始計數,所以若在第一個字元就出現,則會得到0。
subString(起始位置,結束位置)擷取指定範圍的字串,例如從位置0到位置4的字串。
需要2個整數作為參數,用以表示位置。
注意這個方法的結束位置「會被減1」。
意思是若我們希望結束位置是4,那麼使用時應該要傳入5才行。
換個方式說,起始位置是從0開始數,而結束位置如同日常生活是從1開始數。
操作字串方法的範例上面的例子示範了「length」、「indexOf」與「subString」這三個字串方法,它們在使用時會需要傳入零到多個的參數。
且都是屬於「物件.方法();」這個模式。
四、宣告方法(無回傳值)變數可以宣告,方法當然也可以自己定義,就像有些餐廳會自創獨家秘方一樣。
下面要介紹「方法(物件);」這個模式,宣告的方式是這樣的:存取模式需要的關鍵字回傳值型態方法名稱(參數){}關於存取模式與關鍵字,初學者暫時還不需要了解,會在後面單元介紹。
「回傳值型態」的意思是這個方法回傳的資料是什麼型態。
例如字串的length方法會回傳int,subString方法會回傳String。
但方法也是可以不回傳資料的。
在第0課有提到「main方法」方法是程式的進入點。
首先先在main方法的下方撰寫這樣的程式區塊,這樣就宣告好一個方法了,只是還沒有程式流程。
privatestaticvoidprintSeparatedName(StringfullName){}宣告空白方法這是一個名為「printSeparatedName」的方法,我們希望它能接收一個英文名字的參數(字串),並拆解出名字與姓氏,分別輸出在螢幕上。
其他像是private、static的字眼,會在之後的章節介紹。
而void代表這個方法不需將執行結果回傳到呼叫它的地方。
在上一節已經有寫過類似的程式,因此接下來參考先前的程式,來完成這個方法。
privatestaticvoidprintSeparatedName(StringfullName){intspaceIndex=fullName.indexOf('');StringfirstName=fullName.substring(0,spaceIndex);StringlastName=fullName.substring(spaceIndex+1);System.out.println("Firstname:"+firstName);System.out.println("Lastname:"+lastName);}完成後回到main方法,使用剛剛宣告的方法,撰寫程式如下:publicstaticvoidmain(String[]args){Stringname="VincentZheng";printSeparatedName(name);}首先宣告一個英文名字字串。
接著使用剛剛完成的printSeparatedName方法,傳入字串name作為參數。
按下執行後,可以看見結果如我們所預期,名字與姓氏分別顯示出來。
除此之外,主程式main方法變得簡潔了。
自訂無回傳值的方法並執行五、宣告方法(有回傳值)這一節示範宣告有回傳值的方法。
這個的範例是希望宣告兩個方法,能分別擷取出名字與姓氏並傳回。
首先仿照上一節,宣告兩個方法如下:privatestaticvoidgetFirstName(StringfullName){}privatestaticvoidgetLastName(StringfullName){}此時開發工具出現紅色波浪線,代表語法有錯誤。
這個例子是因為方法要回傳執行結果,但我們還沒定義要回傳什麼。
接著再參考上一節的方法,繼續完成擷取firstName與lastName的程式。
privatestaticStringgetFirstName(StringfullName){intspaceIndex=fullName.indexOf('');StringfirstName=fullName.substring(0,spaceIndex);returnfirstName;}privatestaticStringgetLastName(StringfullName){intspaceIndex=fullName.indexOf('');StringlastName=fullName.substring(spaceIndex+1);returnlastName;}在方法的最後,必須透過「return」字眼將結果回傳。
完成後回到main方法,使用剛剛宣告的方法,撰寫程式如下:publicstaticvoidmain(String[]args){Stringname="VincentZheng";StringfirstName=getFirstName(name);StringlastName=getLastName(name);System.out.println("Firstname:"+firstName);System.out.println("Lastname:"+lastName);}在這裡使用了「getFirstName」與「getLastName」方法,將名字與姓氏擷取出來,將它們的回傳值賦予給字串變數firstName與lastName。
按下執行後,可以看見螢幕出現我們預期的結果。
自訂有回傳值的方法並執行六、多載在上一節,擷取出firstName所使用的subString方法接收了兩個參數,但lastName卻只接收一個。
為什麼不會出錯呢?這裡就要介紹方法的一個特性:多載(overload)。
多載的意思是,使用相同的方法名稱,承載多種組合的參數。
若有多個方法名稱相同,只要接收的參數組合不同,在Java的環境中是可以並存的。
以生活上的例子來比喻,有點像飲料店有中杯和大杯的珍奶,它們的容量不同,但品名都是珍珠奶茶!回到subString方法,它是由String這個類別(商店)所提供的方法(商品)。
這個方法應用了多載的特性,使它能接收一個或兩個整數。
再整理一下它的定義:subString(intstartIndex,intendIndex)subString(intstartIndex)第一個是傳入起始位置與結束位置,擷取該範圍的字串。
第二個是只傳入起始位置,從起始點到最後一個字都擷取起來。
最後談談多載的參數組合,以下是正確的多載方式:calculateInterest(intmoney)calculateInterest(intmoney,doubleyearlyRate)calculateInterest(intmoney,doubleyearlyRate,intmonth)calculateInterest(intmoney,intmonth,doubleyearlyRate)第一個方法,參數只有int第二個方法,參數排列為:int、double第三個方法,參數排列為:int、double、int第四個方法,參數排列為:int、int、double以下是錯誤的多載方式:calculateInterest(intmoney)calculateInterest(intmoney,doubleyearlyRate)calculateInterest(intmoney,doubleyearlyRate,intmonth)calculateInterest(intmonth,doubleyearlyRate,intmoney)第三個方法,參數排列為:int、double、int第四個方法,參數排列為:int、double、int在這兩個方法之間出現錯誤的多載方式。
即便參數名稱改變,多載的特性仍不允許資料型態的排列順序是相同的。
Morefrom新手工程師的程式教室這裡提供程式教學文章,分享自學和工作上用到的東西。
希望能讓學生、新鮮人與初學者補充專業能力!本部落格已搬家至https://chikuwa-tech-study.blogspot.com/Readmorefrom新手工程師的程式教室AboutHelpTermsPrivacyGettheMediumappGetstartedVincentZheng456Followers我是Vincent,是個來自資管系的後端軟體工程師。
當初因為學校作業,才踏出寫部落格的第一步。
這裡提供程式教學文章,包含自學和工作上用到的經驗,希望能讓讀者學到東西。
我的部落已搬家至https://chikuwa-tech-study.blogspot.com/FollowHelpStatusWritersBlogCareersPrivacyTermsAboutKnowable
延伸文章資訊
- 1第六章函式(Method;方法)
在物件導向程式設計中,這些函式(function)被稱為方法(method),並且隸 ... 須在函式宣告時就定義回傳值的資料型態,同時,Java也允許函. 式沒有回傳值。
- 2[JAVA] java return 回傳/返回語句介紹用法 - Java程式教學甘仔店
二、return: 此用法為沒有回傳值的意思,必需在方法前宣告為void。 public void testReturn2(int pNum) { // 傳入值為0,離開此方法。
- 3傳值呼叫
在一些程式語言,像是C++之類的程式語言,呼叫方法傳遞引數給參數時,可以有傳值呼叫(Call by value)或傳參考呼叫(Call by reference)的方式。Java當中只有傳值 ...
- 4Java第四週[JPA109、107、107_2、110 函數、副程式的運用
第一題(JPA09)-變數範圍[函數、副程式的運用]:. 函數寫法(副程式). public static int fun() //int 有回傳值(要寫return) public stati...
- 5Java學習筆記-方法(Method)
... 程式的任何地方呼叫,甚至是其他class) private(私人,僅可在同一class使用); 傳回值型態有:void、byte、short、int、long、float、double、...