1. 程式人生 > >java學習之路 之 基本語法-方法(函式)及練習題

java學習之路 之 基本語法-方法(函式)及練習題

方法(函式):方法是類或物件行為特徵的抽象,也稱為函式。 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的學習===小白學程式設計4FOR語句學習

 最近拖延症嚴重發作學習有點斷斷續續,相應的隨筆也沒有更新,所以暫時不考慮完整性,先貼上來接續起來再說。   利用for語句就可以將不同的表名及欄位名賦值給相同的引數,複用同一個語句結構簡化程式碼。 需要的變數是介面名稱、輸入引數,輸出欄位、目標表名稱

Android ORM——greenDAO 3Properties、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應用程式開發至今兩