Java 方法
一個(gè) Java 方法是為了執(zhí)行某個(gè)操作的一些語(yǔ)句的組合昂儒。舉個(gè)例子來(lái)說(shuō),當(dāng)你調(diào)用 System.out.println("字符串") 方法時(shí)瓶蝴,系統(tǒng)實(shí)際上會(huì)執(zhí)行很多語(yǔ)句才能在控制臺(tái)上輸出信息毒返。
現(xiàn)在你將學(xué)習(xí)怎么創(chuàng)建你自己的方法,他們可以有返回值也可以沒(méi)有返回值舷手,可以有參數(shù)拧簸,也可以沒(méi)有參數(shù),重載方法要使用相同的方法名稱(chēng)男窟,并在程序設(shè)計(jì)中利用抽象的方法盆赤。
創(chuàng)建方法
我們用下面的例子來(lái)解釋方法的語(yǔ)法
public static int funcName(int a, int b) {
int i = 9;
return i;
}
在這里
public static:修飾符
int:返回值類(lèi)型
funcName:函數(shù)名稱(chēng)(function)
a,b:形式參數(shù)
int a,int b:參數(shù)列
方法的定義包含方法頭和方法體歉眷。如下所示:
modifier returnType nameOfMethod (Parameter List) {
// method body
}
以上的語(yǔ)法包括
modifier:他定義了方法的訪問(wèn)類(lèi)型牺六,它是可選的。
returnType:方法是可能返回一個(gè)值的姥芥。
nameOfMethod:這是方法的名稱(chēng)兔乞。方法簽名包括方法名稱(chēng)和參數(shù)列表汇鞭。
Parameter List:參數(shù)列表凉唐,它是參數(shù)的次序,類(lèi)型霍骄,以及參數(shù)個(gè)數(shù)的集合台囱。這些都是可選的,當(dāng)然方法也可以沒(méi)有參數(shù)读整。
方法體:方法體定義了這個(gè)方法是用來(lái)做什么的簿训。
示例
這是上面定義的方法max(),該方法接受兩個(gè)參數(shù)num1和num2返回兩者之間的最大值米间。
/** the snippet returns the minimum between two numbers */
public static int minFunction(int n1, int n2) {
int min;
if (n1 > n2)
min = n2;
else
min = n1;
return min;
}
方法調(diào)用
要想使用一個(gè)方法强品,該方法必須要被調(diào)用。方法調(diào)用有兩種方式屈糊,一種是有返回值的的榛,一種是沒(méi)有返回值的。
調(diào)用方法很簡(jiǎn)單逻锐,當(dāng)程序需要調(diào)用一個(gè)方法時(shí)夫晌,控制程序轉(zhuǎn)移到被調(diào)用的方法雕薪,方法將會(huì)返回兩個(gè)條件給調(diào)用者:
返回一條執(zhí)行語(yǔ)句
執(zhí)行到方法結(jié)束
將返回void的方法作為一個(gè)調(diào)用語(yǔ)句,讓我看下面的例子:
System.out.println("hello!");
該方法的返回值可以通過(guò)下面的例子被理解:
int result = sum(6, 9);
示例
下面的例子表明了怎么定義方法和怎么調(diào)用它:
public class ExampleMinNumber{
public static void main(String[] args) {
int a = 11;
int b = 6;
int c = minFunction(a, b);
System.out.println("Minimum Value = " + c);
}
/** returns the minimum of two numbers */
public static int minFunction(int n1, int n2) {
int min;
if (n1 > n2)
min = n2;
else
min = n1;
return min;
}
}
將會(huì)產(chǎn)生如下的結(jié)果
Minimum value = 6
關(guān)鍵字 void
關(guān)鍵字 void 允許我們創(chuàng)建一個(gè)沒(méi)有返回值的方法晓淀。這里我們?cè)谙乱粋€(gè)例子中創(chuàng)建一個(gè) void 方法 methodRankPoints所袁。這個(gè)方法是沒(méi)有返回值類(lèi)型的。調(diào)用 void 方法必須聲明 methodRankPoints(255.7); Java 語(yǔ)句以分號(hào)結(jié)束,如下所示:
public class ExampleVoid {
public static void main(String[] args) {
methodRankPoints(255.7);
}
public static void methodRankPoints(double points) {
if (points >= 202.5) {
System.out.println("Rank:A1");
}
else if (points >= 122.4) {
System.out.println("Rank:A2");
}
else {
System.out.println("Rank:A3");
}
}
}
這將產(chǎn)生如下的結(jié)果:
Rank:A1
方法的重載
當(dāng)一個(gè)方法有兩個(gè)或者更多的方法凶掰,他們的方法名字一樣但是參數(shù)不同時(shí)燥爷,就叫做方法的重載。它與覆蓋是不同的懦窘。覆蓋是指方法具有相同的名字局劲,類(lèi)型以及參數(shù)的個(gè)數(shù)。
讓我們來(lái)考慮之前的找最小整型數(shù)的例子奶赠。如果我們要求尋找浮點(diǎn)型中最小的數(shù)時(shí)鱼填,我們就需要利用方法的重載來(lái)去創(chuàng)建函數(shù)名相同,但參數(shù)不一樣的兩個(gè)或更多的方法毅戈。
下面的例子給予解釋?zhuān)?/p>
public class ExampleOverloading{
public static void main(String[] args) {
int a = 11;
int b = 6;
double c = 7.3;
double d = 9.4;
int result1 = minFunction(a, b);
// same function name with different parameters
double result2 = minFunction(c, d);
System.out.println("Minimum Value = " + result1);
System.out.println("Minimum Value = " + result2);
}
// for integer
public static int minFunction(int n1, int n2) {
int min;
if (n1 > n2)
min = n2;
else
min = n1;
return min;
}
// for double
public static double minFunction(double n1, double n2) {
double min;
if (n1 > n2)
min = n2;
else
min = n1;
return min;
}
}
這將產(chǎn)生如下結(jié)果:
Minimum Value = 6
Minimum Value = 7.3
重載方法使程序易讀苹丸。在這里,兩種方法名稱(chēng)相同但參數(shù)不同。產(chǎn)生整型和浮點(diǎn)類(lèi)型的最小數(shù)作為程序運(yùn)行結(jié)果苇经。
構(gòu)造函數(shù)
這是一個(gè)簡(jiǎn)單的使用構(gòu)造函數(shù)的例子:
// A simple constructor.
class MyClass {
int x;
// Following is the constructor
MyClass() {
x = 10;
}
}
你可以通過(guò)以下方法來(lái)調(diào)用構(gòu)造函數(shù)來(lái)實(shí)例化一個(gè)對(duì)象:
public class ConsDemo {
public static void main(String args[]) {
MyClass t1 = new MyClass();
MyClass t2 = new MyClass();
System.out.println(t1.x + " " + t2.x);
}
}
通常赘理,你將需要用構(gòu)造函數(shù)來(lái)接受一個(gè)或多個(gè)參數(shù)。參數(shù)的傳遞和以上介紹的普通方法的參數(shù)傳遞是一樣的扇单,就是在構(gòu)造函數(shù)的名字后面列出參數(shù)列表商模。
示例
這是一個(gè)簡(jiǎn)單的使用構(gòu)造函數(shù)的例子:
// A simple constructor.
class MyClass {
int x;
// Following is the constructor
MyClass(int i ) {
x = i;
}
}
你可以通過(guò)以下方法來(lái)調(diào)用構(gòu)造函數(shù)來(lái)實(shí)例化一個(gè)對(duì)象:
public class ConsDemo {
public static void main(String args[]) {
MyClass t1 = new MyClass( 10 );
MyClass t2 = new MyClass( 20 );
System.out.println(t1.x + " " + t2.x);
}
}
這將產(chǎn)生如下的結(jié)果:
10 20
可變長(zhǎng)參數(shù)
JDK1.5 能夠允許你傳遞可變長(zhǎng)的同一類(lèi)型的參數(shù)。用如下方法進(jìn)行聲明:
typeName... parameterName
方法聲明時(shí)蜘澜,你要在省略號(hào)前明確參數(shù)類(lèi)型施流,并且只能有一個(gè)可變長(zhǎng)參數(shù),并且可變長(zhǎng)參數(shù)必須是所有參數(shù)的最后一個(gè)鄙信。
示例
public class VarargsDemo {
public static void main(String args[]) {
// Call method with variable args
printMax(34, 3, 3, 2, 56.5);
printMax(new double[]{1, 2, 3});
}
public static void printMax( double... numbers) {
if (numbers.length == 0) {
System.out.println("No argument passed");
return;
}
double result = numbers[0];
for (int i = 1; i < numbers.length; i++)
if (numbers[i] > result)
result = numbers[i];
System.out.println("The max value is " + result);
}
}
這將產(chǎn)生如下的結(jié)果:
The max value is 56.5
The max value is 3.0
課件代碼
// class為:類(lèi)瞪醋,一個(gè).java文件里只能有一個(gè)公共類(lèi)(public class)
public class People{
// 【屬性,實(shí)體變量,成員變量】
int age;
String color;
/*
1.通過(guò)方法的重載装诡,一個(gè)類(lèi)里可以有多個(gè)構(gòu)造函數(shù)
2. 如果不寫(xiě)構(gòu)造函數(shù)银受,會(huì)默認(rèn)生成 最簡(jiǎn)單的構(gòu)造函數(shù)
類(lèi)名(){
}
3.構(gòu)造函數(shù)需要注意:①方法名與類(lèi)名一樣,首字母大寫(xiě)
② 沒(méi)有返回值 ③可以傳若干參數(shù)(初始化對(duì)象用)
4.構(gòu)造函數(shù)的作用就是 創(chuàng)建對(duì)象 用的 給初始值鸦采,
*/
// 構(gòu)造函數(shù)
People() {
age = 10;
color = "black";
}
// 方法的重載
People(int a) {
age = a;
color = "white";
}
People(int a,String c){
age = a;
color = c;
}
/* 跳多高
方法的修飾符 不是必須寫(xiě)的,取決于需要
*/
void jump(int j){
System.out.println("我可以跳:"+j+"米");
}
public static void main(String args[]) {
// 定義一個(gè) 對(duì)象 【非常重要】.People是類(lèi),jhon jerry littleH 是對(duì)象宾巍,對(duì)象可以調(diào)用類(lèi)的【方法和屬性】
People jhon = new People();
// 通過(guò)方法的重載,調(diào)用People(int a) {...}
People jerry = new People(20);
People litleH = new People(23,"blue");
litleH.jump(3);
System.out.println(" litleH: "+litleH.age + " " + litleH.color);
System.out.println(" jerry: "+jerry.age + " " + jhon.color);
System.out.println(" jhon: "+jhon.age + " " + jhon.color);
}
}
// 一個(gè).java 文件中可以有多個(gè)class,但是只能有一個(gè)public clss
class Women{
}
class Men{
}
public class UserString{
public static void main(String[] args) {
UserString us = new UserString();
int [] arrList = {19,3,22,28,32};
int reslut = us.max(arrList);
System.out.print(reslut);
}
/*
function:比較兩個(gè)數(shù)的大小
param: int x, int y
return: int 比較結(jié)果
*/
public int[] max(int[] arr){
int max = arr[0];
for (int x : arr) {
if (x > max) {
max = x;
}
}
return max;
}
}