Java-第3課-方法. 在上一個單元 - Medium

文章推薦指數: 80 %
投票人數:10人

例如字串的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



請為這篇文章評分?