java學習之路 之 基本語法-方法(函式)及練習題
方法的宣告的語法格式:
修飾符 返回值型別 方法名(引數型別 形參1,引數型別 形參2,….){
程式程式碼 return 返回值;
}
其中:
形式引數:在方法被呼叫時用於接收外部傳入的資料的變數。
引數型別:就是該形式引數的資料型別。
返回值:方法在執行完畢後返還給呼叫它的程式的資料。
返回值型別:方法要返回的結果的資料型別。
實參:呼叫方法時實際傳給函式形式引數的資料。
方法的呼叫:
方法只有被呼叫才會被執行
方法的呼叫的注意事項:
沒有具體返回值的情況,返回值型別用關鍵字void表示,那麼該函式中的return語句如果在最後一行可以省略不寫。
定義方法時,方法的結果應該返回給呼叫者,交由呼叫者處理。
方法中只能呼叫方法,不可以在方法內部定義方法。
方法的過載(overload):在同一個類中,允許存在一個以上的同名方法,只要它們的引數個數或者引數型別不同即可。
過載的特點:
與返回值型別無關,只看引數列表,且引數列表必須不同。(引數個數或引數型別)。呼叫時,根據方法引數列表的不同來區別。
例如:
//返回兩個整數的和
int add(int x,int y){return x+y;}
//返回三個整數的和
int add(int x,int y,int z){return x+y+z;}
//返回兩個小數的和
double add(double x,double y){return x+y;}
方法的引數傳遞:
方法,必須有其所在類或物件呼叫才有意義。若方法含有引數:
形參:方法宣告時的引數
實參:方法呼叫時實際傳給形參的引數值
Java的實參值傳入方法
Java裡方法的引數傳遞方式只有一種:值傳遞。 即將實際引數值的副本(複製品)傳入方法內,而引數本身不受影響。
方法練習題:
/** 方法: 也稱為函式, 解決功能封裝的問題 宣告: 修飾符 返回值型別 方法名(形參型別1 形參1, 形參型別2 形參2, 形參型別3 形參3 .....) { 語句; return 返回值型別的具體值; } */ public class MethodTest { // 方法 = 方法簽名 + 方法體 public static int add(int a, int b) { System.out.println("add(int " + a + ", int " + b + ")"); int c = a + b; return c; // c = f(a,b) } public static void test() { // 既沒有返回值, 也沒有形參 System.out.println("test()..."); } public static void main(String[] args) { System.out.println("main begin..."); // 方法呼叫的依據只能是方法簽名(方法的使用說明書) // 方法名(實際引數1, 實際引數2); // 方法的返回值 就是方法呼叫本身 int x = add(10, 20); System.out.println("x:" + x); System.out.println(add(100, 200)); //System.out.println(test()); // 方法的標誌是() 方法無返回值時, 不可以列印輸出方法呼叫 test(); // 方法的標誌是() System.out.println("main end..."); } } /* 1.編寫程式,定義三個過載方法並呼叫。方法名為mOL。 三個方法分別接收一個int引數、兩個int引數、一個字串引數。第一個方法執行平方運算並輸出結果, 第二個方法執行相乘並輸出結果,第三個方法執行輸出字串資訊。 在主類的main ()方法中分別用引數區別呼叫三個方法。 */ public class Method1 { public static int mOL(int a) { int result = a * a; return result; } public static int mOL(int a,int b) { int result = a * b; return result; } public static String mOL(String str) { String tem = str; return tem; } public static void main(String[] args) { System.out.println(mOL(5)); System.out.println(mOL(5,6)); System.out.println(mOL("我是第三個方法!")); } } /* 定義三個過載方法max(),第一個方法求兩個int值中的最大值,第二個方法求兩個double值中的最大值, 第三個方法求三個double值中的最大值,並分別呼叫三個方法。 */ public class Method2 { public static int max(int a,int b) { int max = a > b ? a : b; return max; } public static double max(double a,double b) { double max = a > b ? a : b; return max; } public static double max(double a,double b,double c) { double max = a > b ? a : b; max = max > c ? max : c; return max; } public static void main(String[] args) { System.out.println(max(5,6)); System.out.println(max(5.5,6.6)); System.out.println(max(5.5,6.6,7.7)); } } //編寫程式,宣告一個method方法,在方法中列印一個10*8的矩形,在main方法中呼叫該方法。 //再宣告一個方法method2, 在方法中列印一個n*m的矩形,在main方法中呼叫該方法. //再宣告一個方法method3, 在方法中列印一個n*m的矩形,列印完後計算矩形的周長並返回, 在main方法中呼叫該方法, //列印矩形的周長 public class MethodExer { public static void method() { for (int i = 0; i < 10; i++) { for (int j = 0; j < 8; j++) { System.out.print("*"); } System.out.println(); } } public static void method2(int n, int m) { for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { System.out.print("*"); } System.out.println(); } } public static int method3(int n, int m) { for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { System.out.print("*"); } System.out.println(); } int l = (m + n) * 2; return l; } public static void main(String[] args) { System.out.println("main begin"); // 方法呼叫 //method(); //method2(10, 8); System.out.println(method3(20, 60)); // 先列印矩形, 再列印返回值 } } public class StaticClass1{ //方法的“連環呼叫”以及方法的過載,在Method類中呼叫實現 public static void method() { //列印一個10*8的矩形 method2(10,8); } public static void method2(int n,int m) { //列印一個n*m的矩形 for (int i = 0;i < n;i++) { for (int j = 0;j < m;j++) { System.out.print("*"); } System.out.println(); } } public static int method3(int n,int m) { //列印一個n*m的矩形並返回其周長 method2(n,m); return 2 * (n + m); } public static int method3(int n) { //列印一個n*n的正方形並返回其周長 return method3(n,n); } } public class Method { //編寫程式,宣告一個method方法,在方法中列印一個10*8的矩形,在main方法中呼叫該方法。 //在宣告一個method2,在方法中列印一個n*m的矩形,在main方法中呼叫該方法。 //在宣告一個method2,在方法中列印一個n*m的矩形並計算矩形的周長,在main方法中呼叫該方法。 public static void main(String[] args) { /* StaticClass.method(); StaticClass.method2(8,9); System.out.println(StaticClass.method3(7,8)); System.out.println(StaticClass.method3(7)); */ StaticClass1.method(); StaticClass1.method2(2,3); System.out.println(StaticClass1.method3(10,15)); System.out.println(StaticClass1.method3(7)); } }
相關推薦
java學習之路 之 基本語法-方法(函式)及練習題
方法(函式):方法是類或物件行為特徵的抽象,也稱為函式。 Java裡的方法不能獨立存在,所有的方法必須定義在類裡。方法的宣告的語法格式: 修飾符 返回值型別 方法名(引數型別 形參1,引數型別 形參2,….){ 程式程式碼 return 返回值; } 其中:形式引數:
python的學習之路===小白學程式設計(1)
當我follow一個同事介紹的博主的時候,發現了這個七年前註冊過的部落格賬號。 當時好像在學習c#和mvc的一些東東。 但是回頭看去,不止七年前,更早更早之前,就一直在嘗試著學習程式設計,想掌握一個能夠得心應手的工具。但由於需求並不迫切,加上自己性格使然,斷斷續續的撿起放下,淺嘗輒止的嘗試
python的學習之路===小白學程式設計(2)
11月9日 資料庫架構,資料庫設計花的時間有點多,貌似想多了的緣故。 回頭看一下自己的目標,是想通過這個增加對python熟悉程度,提高學習興趣,掌握和了解使用python程式設計的方法。 而實際上至少目前而言自己還是不具備直接考慮程式設計的能力的。所以一切以簡單為主。 那
python的學習之路===小白學程式設計(3)
額不找介面,就是懈怠了。。。。 資料庫表弄好了,但是返回來寫又出問題了。。檢查了半點才發現是拼寫錯誤。。。。 混亂的思路一直沒有理清,所以建好的表結構發現也還是不能夠馬上用。。。。。。。。。。。。 似乎方法出問題了。 下面換個思路吧:每個練習學習的檔案明確一個目標,不把所有
python的學習之路===小白學程式設計(4)FOR語句學習
最近拖延症嚴重發作學習有點斷斷續續,相應的隨筆也沒有更新,所以暫時不考慮完整性,先貼上來接續起來再說。 利用for語句就可以將不同的表名及欄位名賦值給相同的引數,複用同一個語句結構簡化程式碼。 需要的變數是介面名稱、輸入引數,輸出欄位、目標表名稱
Android ORM——greenDAO 3之Properties、QueryBuilder與資料庫的增刪改查的基本語法應用(二)
引言 Android ORM——初識greenDAO 3及使用greenDAO 3前應該掌握的一些知識點介紹了greenDAO的配置步驟和一些重要的知識點,以及重要的角色的功能和聯絡,這一篇就正式開始結合點原始碼從應用greenDAO方面總結。在使用green
QT的學習之路 1佈局控制元件(Layout)
一.佈局控件(Layout) 垂直佈局( vertically ),相關類: QVBoxLayout水平佈局( horizontally )相關類: QHBoxLayout網格佈局( grid)
活得更像一個人,我的十六年學習之路——北漂18年(44)
胡先生是武漢大學畢業的。武漢大學(Wuhan University),簡稱“武大”,位於湖北武漢,是直屬於中華人民共和國教育部的副部級全國重點大學,國家首批“985工程”、“211工程”、“2011計劃”重點建設高校,同時是“111計劃”、“珠峰計劃”、“海外高層次人才引進計劃”、“卓越工程師教育培養計劃”、
AI 學習之路——輕鬆初探 Python 篇(三)
這是「AI 學習之路」的第 3 篇,「Python 學習」的第 2 篇 Python 字串使用和 C 語言比較類似,但還有一些我們值得注意的地方需要關注,用這篇文章來幫助大家掌握 Python 的字串吧! 編碼 不論什麼語言,我們都需要考慮
AI 學習之路——輕鬆初探 Python 篇(二)
這是「AI 學習之路」的第 2 篇,「Python 學習」的第 2 篇 我將分兩篇講解下 Python 的基礎語法,這是第一篇。大家也可以在很多地方看到入門的學習資料,我就簡單的根據自己理解和學習,用盡量簡單和好理解的方式,再來小入門一下,文中可能
.Net轉Java自學之路—Mybatis框架篇一(入門)
spa dstat namespace devel word nvi lose 列名 優化 原生態JDBC程序問題總結: 1、數據庫連接,使用時就創建,不使用立即釋放。該操作是對數據庫進行頻繁連接開啟和關閉,造成數據庫資源浪費,影響數據庫性能。 解決:使用數據庫
.Net轉Java自學之路—SpringMVC框架篇一(簡述)
RKE jsp 實現類 適配器 isp 基於 freemark ping 之間 SpringMVC是Spring框架的一個模塊,SpringMVC和Spring無需通過中間層進行整合。SpringMVC是一個基於MVC設計模式的一個框架。 SpringMVC框架原理:
Kotlin VS Java:基本語法差異(轉載)
允許 接收 point this view 學習 替換 同時 ons 5月18號,goole宣布Kotlin成為官方支持的開發語言以來,Kotlin語言社區,公眾號,qq群等全面轟炸,本文是一篇譯文,來自國外的一個用戶,將給大家介紹,基礎語法部分Kotlin和java之間的
樹莓派進階之路 (032) -字符問題(2) - 用c語言怎樣得到一個漢字的GB2312編碼(轉)
十六進制 字符串 c++ gb2 十進制 轉換 tails 表示 blog C/C++支持的是ASCII,不過漢字編碼中,GB2312與ASCII是兼容的,所以可以在C中獲得漢字的GB2312編碼 GB2312是兩個字節的,第一字節是高八位,第二字節是低八位,比如下面的程序
SpringCloud成長之路 一 註冊與發現(Eureka)
tail OS .so 註解 ont 基於 因此 AC spa 一、spring cloud簡介 spring cloud 為開發人員提供了快速構建分布式系統的一些工具,包括配置管理、服務發現、斷路器、路由、微代理、事件總線、全局鎖、決策競選、分布式會話等等。它運行環境簡單
python之路:用戶輸入(一)
老師 用法 inf 代碼 用戶輸入 display 用戶 -- class python之路:用戶輸入(一) 好了,現在我學了點博客的用法,現在不會像以前的那麽土了。好吧,不多說,我要講課了。 今天,我會用情景實例給大家說這個用戶輸入。 情景是:你是IT教育的python帶
spring-boot-2.0.3不一樣系列之源碼篇 - run方法(二)之prepareEnvir
config ace let fff 輸出 cloud 通過 什麽事 來看 前言 此系列是針對springboot的啟動,旨在於和大家一起來看看springboot啟動的過程中到底做了一些什麽事。如果大家對springboot的源碼有所研究,可以挑些自己感興趣或者對自己有
spring-boot-2.0.3不一樣系列之源碼篇 - run方法(三)之createApplicationContext,絕對有值得你看的地方
處理 gen 利用反射 mva 默認 .get war close -s 前言 此系列是針對springboot的啟動,旨在於和大家一起來看看springboot啟動的過程中到底做了一些什麽事。如果大家對springboot的源碼有所研究,可以挑些自己感興趣或者對自己有
spring-boot-2.0.3不一樣系列之源碼篇 - run方法(四)之prepareContext,絕對有值得你看的地方
release led 設置 get handler htm encoding 列表創建 splay 前言 此系列是針對springboot的啟動,旨在於和大家一起來看看springboot啟動的過程中到底做了一些什麽事。如果大家對springboot的源碼有所研究,可
我的技術轉型之路——從C++到Android (一)
作為一個程式設計師,學習是工作必不可少的一個環節,從學習新的API、類庫、IDE的使用到學習一種全新的開發語言,我們跟隨著時代的腳步不斷挑戰和改變著自己。而所謂技術轉型到底多大幅度才算,其實也很難說得清,我自工作開始先是從事了兩年多的C++開發,而後因工作需要轉而學習Android應用程式開發至今兩