一霍比、介紹
方法是一個(gè)漢語(yǔ)詞匯幕袱,方法的含義較廣泛,一般是指為獲得某種東西或達(dá)到某種目的而采取的手段與行為方式悠瞬。方法在哲學(xué)们豌,科學(xué)及生活中有著不同的解釋與定義。
軟件編程語(yǔ)言中,如果將函數(shù)定義為類(lèi)定義的一部分或者將它與某個(gè)對(duì)象綁定,則該函數(shù)稱(chēng)為方法浅妆;.
二望迎、內(nèi)容
1.1 方法概述
軟件的本質(zhì)是為我們提供了解決日常事務(wù)的許多功能。在Java當(dāng)中通過(guò)方法的方式來(lái)完成這些功能凌外。即Java中的某個(gè)方法提供了某種功能辩尊,供我們?nèi)祟?lèi)解決問(wèn)題。
我們可以將一個(gè)完整功能的代碼組織成一個(gè)方法趴乡,在再次完成相同的功能時(shí)对省,便可以直接以整體的方式調(diào)用該功能蝗拿,而不需要再將具體實(shí)現(xiàn)過(guò)程完整重復(fù)編寫(xiě)一遍晾捏。
main方法就是一個(gè)特殊的方法。作為程序入口哀托,供JVM調(diào)用惦辛。
我們將不同功能定義成不同方法。供其他方法調(diào)用仓手。最先接觸方法時(shí),我們定義不同的方法,供main方法直接調(diào)用碴犬。
1.2 方法的定義及使用
方法是對(duì)現(xiàn)實(shí)功能的一個(gè)抽象蠢古,便于對(duì)功能的復(fù)用。在一個(gè)類(lèi)中可以有多個(gè)方法仿荆,多個(gè)方法是平等關(guān)系。
在很多語(yǔ)言當(dāng)中,相同的概念使用函數(shù)來(lái)命名箫锤。
1.2.1 方法定義格式
在Java中,聲明一個(gè)方法的具體語(yǔ)法格式如下:
修飾符 返回值類(lèi)型 方法名(參數(shù)類(lèi)型 參數(shù)名1,參數(shù)類(lèi)型 參數(shù)名2,......){
執(zhí)行語(yǔ)句
………
return 返回值;
}
對(duì)于上面的語(yǔ)法格式中具體說(shuō)明如下:
修飾符:方法的修飾符比較多雨女,有對(duì)訪問(wèn)權(quán)限進(jìn)行限定的谚攒,有靜態(tài)修飾符static,還有最終修飾符final等氛堕,這些修飾符在后面的學(xué)習(xí)過(guò)程中會(huì)逐步介紹馏臭。目前使用固定的public static修飾符
返回值類(lèi)型:方法返回值的數(shù)據(jù)類(lèi)型
參數(shù)類(lèi)型:調(diào)用方法時(shí)傳入?yún)?shù)的數(shù)據(jù)類(lèi)型
參數(shù)名:是一個(gè)變量,用于接收調(diào)用方法時(shí)傳入的數(shù)據(jù)
return關(guān)鍵字:用于結(jié)束方法以及返回返回值
返回值:被return語(yǔ)句返回的值讼稚,該值會(huì)返回給調(diào)用者
1.2.2 方法的使用格式
1.2.2.1 方法的使用:
所有的方法定義出來(lái)括儒,都是為了讓別的方法使用的。永遠(yuǎn)不被別人調(diào)用的方法乱灵,其定義是沒(méi)有意義的塑崖。
使用格式
在前邊講解引用數(shù)據(jù)類(lèi)型的簡(jiǎn)單使用時(shí),我們已經(jīng)使用過(guò)方法
使用格式即:對(duì)象名.方法名(對(duì)應(yīng)參數(shù))
當(dāng)一個(gè)類(lèi)中有多個(gè)方法痛倚,多個(gè)方法之間可以相互直接調(diào)用规婆,無(wú)需創(chuàng)建對(duì)象
使用格式:方法名(參數(shù));
注意
方法必須先定義再使用
方法的定義順序跟調(diào)用無(wú)關(guān)
/*
方法:方法就是對(duì)功能的封裝,可以提高代碼的復(fù)用性
工廠:
制造鋼鐵:原料礦石
制造牛奶:原料奶牛
定義方法的格式:
修飾符 返回值類(lèi)型 方法名(參數(shù)類(lèi)型 參數(shù)名1,參數(shù)類(lèi)型 參數(shù)名2,......){
執(zhí)行語(yǔ)句
………
return 返回值;
}
對(duì)于上面的語(yǔ)法格式中具體說(shuō)明如下:
修飾符:方法的修飾符比較多,有對(duì)訪問(wèn)權(quán)限進(jìn)行限定的蝉稳,有靜態(tài)修飾符static抒蚜,還有最終修飾符final等,
這些修飾符在后面的學(xué)習(xí)過(guò)程中會(huì)逐步介紹耘戚。目前使用固定的public static修飾符
返回值類(lèi)型:方法返回值的數(shù)據(jù)類(lèi)型
參數(shù)類(lèi)型:調(diào)用方法時(shí)傳入?yún)?shù)的數(shù)據(jù)類(lèi)型
參數(shù)名:是一個(gè)變量嗡髓,用于接收調(diào)用方法時(shí)傳入的數(shù)據(jù)
return關(guān)鍵字:用于結(jié)束方法以及返回返回值
返回值:被return語(yǔ)句返回的值,該值會(huì)返回給調(diào)用者, 返回值的數(shù)據(jù)類(lèi)型一定要與返回值類(lèi)型統(tǒng)一
方法調(diào)用格式:
方法名(參數(shù));
*/
public class Demo01Method{
public static void main(String[] args){
//調(diào)用方法
int c = add(3,4);//7
System.out.println("c? = " + c);
}
//定義求兩個(gè)整數(shù)和方法? ? 3? ? 4?
public static int add(int a,int b){
System.out.println("求兩個(gè)整數(shù)的和方法開(kāi)始");
int sum = a + b;
System.out.println("求兩個(gè)整數(shù)的和方法結(jié)束");
return sum;//7
}
}
1.2.2.2 調(diào)用方法介紹:求和方法編寫(xiě)
public class Demo01Method {
/*
* 寫(xiě)一個(gè)方法收津,用于求和饿这。
* 兩個(gè)明確: 返回值類(lèi)型 int 參數(shù)列表int a,int b
*/
public static int sum(int a,int b){
/*int c = a + b;
return c;*/
return a + b;
}
}
求和方法的調(diào)用(有明確返回值)
使用格式:方法名(參數(shù));
單獨(dú)調(diào)用,沒(méi)有意義
sum(10,20);
輸出調(diào)用撞秋,有意義长捧,但是不夠好,因?yàn)槲也灰欢ǚ且呀Y(jié)果輸出
System.out.println(sum(10,20));
賦值調(diào)用吻贿,推薦方式
int s = sum(10, 20);
// s+=100;
System.out.println("s:"+s);
求和方法的調(diào)用圖解
1.2.3 定義格式注意事項(xiàng)
a) 返回值類(lèi)型
可以返回任意類(lèi)型,包含基本數(shù)據(jù)類(lèi)型與引用數(shù)據(jù)數(shù)據(jù)類(lèi)型
如果沒(méi)有返回值串结,則使用void
b) return
結(jié)束方法的同時(shí)如果定義的返回值類(lèi)型不是void,則同時(shí)將結(jié)果返回給調(diào)用者。
當(dāng)返回值類(lèi)型為void時(shí)肌割,return后可以不跟返回值
當(dāng)返回值類(lèi)型為void時(shí)卧蜓,可以省略,Java會(huì)自動(dòng)補(bǔ)齊
c) 返回值
該方法運(yùn)算的數(shù)值結(jié)果把敞,該結(jié)果會(huì)通過(guò)return返回給調(diào)用者
有時(shí)結(jié)果運(yùn)行后沒(méi)有返回值弥奸。(買(mǎi)東西與買(mǎi)服務(wù))
返回值的數(shù)據(jù)類(lèi)型一定要與返回值類(lèi)型統(tǒng)一
d) 方法名
方法的名稱(chēng),區(qū)分不同方法的依據(jù)之一
定義符合小駝峰式? wordWordWord
e) 形式參數(shù)
是形式參數(shù)的數(shù)據(jù)類(lèi)型奋早,在定義時(shí)沒(méi)有賦值其爵,在方法使用時(shí)一定有值,所以可以使用該變量完成邏輯
是一個(gè)變量伸蚯,用于存儲(chǔ)調(diào)用方法時(shí)傳遞給方法的實(shí)際數(shù)值
/*
定義方法的注意事項(xiàng):
a)返回值類(lèi)型
可以返回任意類(lèi)型,包含基本數(shù)據(jù)類(lèi)型與引用數(shù)據(jù)數(shù)據(jù)類(lèi)型
如果沒(méi)有返回值摩渺,則使用void
b)return
結(jié)束方法的同時(shí)如果定義的返回值類(lèi)型不是void,則同時(shí)將結(jié)果返回給調(diào)用者剂邮。
當(dāng)返回值類(lèi)型為void時(shí)摇幻,return后可以不跟返回值
當(dāng)返回值類(lèi)型為void時(shí),return可以省略挥萌,Java會(huì)自動(dòng)補(bǔ)齊
c)返回值
該方法運(yùn)算的數(shù)值結(jié)果绰姻,該結(jié)果會(huì)通過(guò)return返回給調(diào)用者
有時(shí)結(jié)果運(yùn)行后沒(méi)有返回值。(買(mǎi)東西與買(mǎi)服務(wù))
返回值的數(shù)據(jù)類(lèi)型一定要與返回值類(lèi)型統(tǒng)一
d)方法名
方法的名稱(chēng)引瀑,區(qū)分不同方法的依據(jù)之一
定義符合小駝峰式? wordWordWord
e)形式參數(shù)
是形式參數(shù)的數(shù)據(jù)類(lèi)型狂芋,在定義時(shí)沒(méi)有賦值,在方法使用時(shí)一定有值憨栽,所以可以使用該變量完成邏輯
是一個(gè)變量帜矾,用于存儲(chǔ)調(diào)用方法時(shí)傳遞給方法的實(shí)際數(shù)值
*/
public class Demo02Method{
public static void main(String[] args){
//調(diào)用唐僧生孩子方法
//String xingMing = shengHaiZi(36);
//System.out.println("名字是: " + xingMing);?
//唐僧生一群孩子方法
String[] xingMings = shengYiQunHaiZi(108);
for(int i=0; i<xingMings.length; i++){
System.out.println("第"+(i+1)+"孩子的姓名是: " +xingMings[i]);
}?
//坐月子的方法
zuoYueZi(1800);
}
//定義一個(gè)唐僧生孩子方法
public static String shengHaiZi(int month){
System.out.println("懷了"+month+"個(gè)月,終于生孩子了!");
String name = "糖三角";
return name;
}
//定義一個(gè)唐僧生一群孩子方法
public static String[] shengYiQunHaiZi(int month){
System.out.println("懷了"+month+"個(gè)月,終于生了一群孩子了!");
String[] names = {"孫悟空","豬八戒","沙師弟","白龍馬"};
return names;
}
//定義一個(gè)坐月子的方法
public static void zuoYueZi(int day){
System.out.println("在床上躺了"+day+"天!");
//return;
}
}
1.2.4 定義格式void與參數(shù)詳解:
1.2.4.1 Void修飾的方法
格式
修飾符 void 方法名(參數(shù)類(lèi)型 參數(shù)名1,參數(shù)類(lèi)型 參數(shù)名2…) {
方法體;
return 返回值;
}
沒(méi)有明確返回值的函數(shù)調(diào)用:
其實(shí)就是void類(lèi)型方法的調(diào)用
只能單獨(dú)調(diào)用
案例
寫(xiě)一個(gè)方法屑柔,在控制臺(tái)輸出10次HelloWorld案例屡萤。
public class Demo01Method {
public static void main(String[] args) {
//單獨(dú)調(diào)用
printHelloWorld();
}
//在控制臺(tái)輸出10次HelloWorld案例。
public static void printHelloWorld() {
for(int x=1; x<=10; x++) {
System.out.println("HelloWorld");
}
}
}
1.2.4.2 Void修飾方法練習(xí)
1.2.4.2.1 定義一個(gè)方法掸宛,傳遞一個(gè)整數(shù)(大于1)死陆,在控制臺(tái)打印1到該數(shù)據(jù)的值。
public class Demo02Method {
public static void main(String[] args) {
printNumber(10);
System.out.println("-------------------");
printNumber(100);
}
//在控制臺(tái)打印1到該數(shù)據(jù)n的值
public static void printNumber(int n) {
for(int x=1; x<=n; x++) {
System.out.println(x);
}
}
}
1.2.4.2.2定義一個(gè)方法唧瘾,把所有的水仙花數(shù)打印在控制臺(tái)
public class Demo03Method {
public static void main(String[] args) {
printFlower();
}
//把所有的水仙花數(shù)打印在控制臺(tái)
public static void printFlower() {
for(int x=100; x<1000; x++) {
int ge = x%10;
int shi = x/10%10;
int bai = x/10/10%10;
if((ge*ge*ge+shi*shi*shi+bai*bai*bai) == x){
System.out.println(x);
}
}
}
}
1.2.5 方法參數(shù)傳遞問(wèn)題
1.2.5.1 參數(shù)傳遞概述
可以理解當(dāng)我們要調(diào)用一個(gè)方法時(shí)措译,我們會(huì)把指定的數(shù)值,傳遞給方法中的參數(shù)饰序,這樣方法中的參數(shù)就擁有了這個(gè)指定的值领虹,可以使用該值,在方法中運(yùn)算了菌羽。這種傳遞方式掠械,我們稱(chēng)為參數(shù)傳遞。
在這里注祖,定義方法時(shí)猾蒂,參數(shù)列表中的變量,我們稱(chēng)為形式參數(shù)
調(diào)用方法時(shí)是晨,傳入給方法的數(shù)值肚菠,我們稱(chēng)為實(shí)際參數(shù)
1.2.5.2 參數(shù)是基本類(lèi)型及圖解
n 形式參數(shù)的改變不影響實(shí)際參數(shù)。
public class Demo01Args {
public static void main(String[] args) {
// 定義變量
int a = 10;
int b = 20;
System.out.println("a:" + a + ",b:" + b);// a:10,b:20
change(a, b);
System.out.println("a:" + a + ",b:" + b);// a:10,b:20
}
public static void change(int a, int b) { // a=10,b=20
System.out.println("a:" + a + ",b:" + b);// a:10,b:20
a = b; // a=20;
b = a + b;// b=40;
System.out.println("a:" + a + ",b:" + b);// a:20,b:40
}
}
1.2.5.3 參數(shù)是引用類(lèi)型及圖解
public class Demo02Args {
public static void main(String[] args) {
// 定義數(shù)組
int[] arr = { 1, 2, 3, 4, 5 };
// 遍歷數(shù)組
for (int x = 0; x < arr.length; x++) {
System.out.println(arr[x]);
}
System.out.println("----------------");
change(arr);
for (int x = 0; x < arr.length; x++) {
System.out.println(arr[x]);
}
}
public static void change(int[] arr) {
for (int x = 0; x < arr.length; x++) {
// 如果元素是偶數(shù)罩缴,值就變?yōu)橐郧暗?倍
if (arr[x] % 2 == 0) {
arr[x] *= 2;
}
}
}
}
1.2.6 多個(gè)方法可以共同訪問(wèn)成員變量
當(dāng)一個(gè)類(lèi)中定義了多個(gè)方法時(shí)蚊逢,在方法A中定義的局部變量無(wú)法在方法B中直接訪問(wèn)。此時(shí)可以將變量定義在成員位置(類(lèi)中方法外)箫章,供多個(gè)方法同時(shí)訪問(wèn)烙荷。
使用static修飾的方法只能訪問(wèn)被static修飾的成員變量。
/*
多個(gè)方法之間不可以使用各自的局部變量
多個(gè)方法都可以使用成員變量,但是現(xiàn)在的方法都是用static修飾的,所以要訪問(wèn)成員變量,成員變量也必須被static修飾
成員變量:類(lèi)的里邊,方法的外邊
*/
public class Demo03Method{
//int x;//錯(cuò)誤: 無(wú)法從靜態(tài)上下文中引用非靜態(tài) 變量 x
static int x;
public static void main(String[] args){
x = 100;
System.out.println("x = " + x);?
//調(diào)用method2方法
method2();
}
//方法1
public static int method1(int a){
int b = 10;
System.out.println(a*b);
return a*b;
}
//方法2
public static void method2(){
//System.out.println(a*b);// 錯(cuò)誤: 找不到符號(hào) 方法2不能使用方法1里邊的變量
//x = 200;
System.out.println("x = " + x);
}
}
1.3 方法定義練習(xí)
分別定義如下方法:
1.3.1 無(wú)返回值無(wú)參數(shù)方法檬寂,如打印3*3的矩形
1.3.2 有返回值無(wú)參數(shù)方法终抽,如鍵盤(pán)錄入得到一個(gè)整數(shù)
1.3.3 無(wú)返回值有參數(shù)方法,如打印指定M*N的矩形
1.3.4 有返回值有參數(shù)方法桶至,如求三個(gè)數(shù)的平均值
/*
定義方法的練習(xí);
無(wú)返回值無(wú)參數(shù)方法昼伴,如用*打印3*3的矩形
無(wú)返回值有參數(shù)方法,如用*打印指定M*N的矩形
有返回值無(wú)參數(shù)方法镣屹,如鍵盤(pán)錄入得到一個(gè)整數(shù)
有返回值有參數(shù)方法圃郊,如求三個(gè)數(shù)的平均值
*/
import java.util.Scanner;
public class Demo04Method{
public static void main(String[] args){
//調(diào)用打印矩形方法
//printJX();
//調(diào)用打印不同矩形方法
//printJuXing(9,9);
//printJuXing(7,6);
//調(diào)用獲取整數(shù)的方法
int a = getNumber();
System.out.println("a = " + a);
//調(diào)用求3個(gè)小數(shù)平均數(shù)方法
double b = pingJun(3.0,4.0,5.0);
System.out.println("b = " + b);
}
/*
無(wú)返回值無(wú)參數(shù)方法,如用*打印3*3的矩形
返回值類(lèi)型: void
方法名: printJX
參數(shù)列表: 空
*/
public static void printJX(){
/*
***
***
***
*/
for(int i=0; i<3; i++){//控制打印行數(shù)
for(int j=0; j<3; j++){//控制每行打印幾個(gè)
System.out.print("*");
}
System.out.println();
}
}
/*
無(wú)返回值有參數(shù)方法女蜈,如用*打印指定M*N的矩形
返回值類(lèi)型: void
方法名: printJuXing
參數(shù)列表: int m, int n
*/
public static void printJuXing(int m, int n){
for(int i=0; i<m; i++){//控制打印行數(shù)
for(int j=0; j<n; j++){//控制每行打印幾個(gè)
System.out.print("*");
}
System.out.println();
}
}
/*
有返回值無(wú)參數(shù)方法持舆,如鍵盤(pán)錄入得到一個(gè)整數(shù)
返回值類(lèi)型: int
方法名: getNumber
參數(shù)列表: 空
*/
public static int getNumber(){
Scanner sc = new Scanner(System.in);
System.out.println("請(qǐng)輸入一個(gè)整數(shù): ");
int number = sc.nextInt();
return number;
}
/*
有返回值有參數(shù)方法,如求三個(gè)小數(shù)的平均值
返回值類(lèi)型: double
方法名: pingJun (avg)
參數(shù)列表: double a,double b,double c
*/
public static double pingJun(double a,double b,double c){
//double avg = (a + b + c)/3;
return (a + b + c)/3;
}
}
1.3.5 獲取兩個(gè)數(shù)據(jù)中的較大值
public class Demo03MethodTest {
public static void main(String[] args) {
//創(chuàng)建對(duì)象
Scanner sc = new Scanner(System.in);
//接收數(shù)據(jù)
System.out.println("請(qǐng)輸入第一個(gè)數(shù)據(jù):");
int x = sc.nextInt();
System.out.println("請(qǐng)輸入第二個(gè)數(shù)據(jù):");
int y = sc.nextInt();
//調(diào)用方法
int max = getMax(x,y);
System.out.println("max:"+max);
}
// 返回兩個(gè)數(shù)中的較大值
public static int getMax(int a, int b) {
if (a > b) {
return a;
} else {
return b;
}
}
}
1.3.6 比較兩個(gè)數(shù)據(jù)是否相等
public class Demo04MethodTest {
public static void main(String[] args) {
//創(chuàng)建對(duì)象
Scanner sc = new Scanner(System.in);
//接收數(shù)據(jù)
System.out.println("請(qǐng)輸入第一個(gè)數(shù)據(jù):");
int a = sc.nextInt();
System.out.println("請(qǐng)輸入第二個(gè)數(shù)據(jù):");
int b = sc.nextInt();
//調(diào)用方法
boolean flag = compare(a,b);
System.out.println("flag:"+flag);
}
//比較兩個(gè)數(shù)是否相等
public static boolean compare(int a,int b){
if(a==b){
return true;
}else {
return false;
}
}
}
1.3.7 獲取三個(gè)數(shù)據(jù)中的較大值
public class Demo05MethodTest {
public static void main(String[] args) {
//創(chuàng)建對(duì)象
Scanner sc = new Scanner(System.in);
//接收數(shù)據(jù)
System.out.println("請(qǐng)輸入第一個(gè)數(shù)據(jù):");
int a = sc.nextInt();
System.out.println("請(qǐng)輸入第二個(gè)數(shù)據(jù):");
int b = sc.nextInt();
System.out.println("請(qǐng)輸入第三個(gè)數(shù)據(jù):");
int c = sc.nextInt();
//調(diào)用方法
int max = getMax(a,b,c);
System.out.println("max:"+max);
}
// 返回三個(gè)數(shù)中的最大值
public static int getMax(int a, int b, int c) {
if (a > b) {
if (a > c) {
return a;
} else {
return c;
}
} else {
if (b > c) {
return b;
} else {
return c;
}
}
}
}
1.4 方法重載
在同一個(gè)類(lèi)中伪窖,不能出現(xiàn)兩個(gè)完全一樣的方法吏廉。但是如果有多個(gè)功能,而這些功能大致相同只是某些已知量不同時(shí)惰许,可以將兩個(gè)方法的名稱(chēng)定義成相同的席覆,而參數(shù)不同。這些相同名稱(chēng)不同參數(shù)的方法之間是重載關(guān)系汹买。
1.4.1 方法重載定義
在同一個(gè)類(lèi)中佩伤,出現(xiàn)方法名相同而參數(shù)列表不同,這樣定義方法叫做方法重載晦毙。
這樣的設(shè)計(jì)優(yōu)化了程序設(shè)計(jì)
如:求3個(gè)數(shù)生巡,4個(gè)數(shù)的和
方法定義:與求兩數(shù)邏輯類(lèi)似,求3见妒、4個(gè)數(shù)和的方法中中只有參數(shù)不同孤荣。方法名與求兩數(shù)的方法名相同,三個(gè)方法互為重載關(guān)系
public static int add(int a,int b) {邏輯} //兩個(gè)數(shù)加法
public static int add(int a,int b,int c) {邏輯} //三個(gè)數(shù)加法
public static int add(int a,int b,int c,int d) {邏輯} //四個(gè)數(shù)加法
方法使用:main方法中直接調(diào)用
/*
方法重載:在一個(gè)類(lèi)中方法名相同,參數(shù)列表不同
*/
public class Demo05Overload{
public static void main(String[] args){
System.out.println(add(10,20,30,40));
}
//兩個(gè)數(shù)加法
public static int add(int a,int b) {
System.out.println("調(diào)用兩個(gè)數(shù)相加");
return a + b;
}
//三個(gè)數(shù)加法
public static int add(int a,int b,int c) {
System.out.println("調(diào)用三個(gè)數(shù)相加");
return a + b + c;
}
//四個(gè)數(shù)加法
public static int add(int a,int b,int c,int d) {
System.out.println("調(diào)用四個(gè)數(shù)相加");
return a + b + c + d;
}
}
1.4.2 重載的注意事項(xiàng)
a) 重載方法參數(shù)必須不同:
參數(shù)個(gè)數(shù)不同,如method(int x)與method(int x,int y)不同
參數(shù)類(lèi)型不同盐股,如method(int x)與method(double x)不同
參數(shù)順序不同钱豁,如method(int x,double y)與method(double x,int y)不同
b) 重載只與方法名與參數(shù)類(lèi)型相關(guān)與返回值無(wú)關(guān)
如void method(int x)與int method(int y)不是方法重載,不能同時(shí)存在
c) 重載與具體的變量標(biāo)識(shí)符無(wú)關(guān)
如method(int x)與method(int y)不是方法重載疯汁,不能同時(shí)存在
/*
重載的注意事項(xiàng)
a)重載方法參數(shù)必須不同:
參數(shù)個(gè)數(shù)不同牲尺,如method(int x)與method(int x,int y)不同
參數(shù)類(lèi)型不同,如method(int x)與method(double x)不同
參數(shù)順序不同幌蚊,如method(int x,double y)與method(double x,int y)不同
b)重載只與方法名與參數(shù)類(lèi)型相關(guān)與返回值無(wú)關(guān)
如void method(int x)與int method(int y)不是方法重載谤碳,不能同時(shí)存在
c)重載與具體的變量標(biāo)識(shí)符無(wú)關(guān)
如method(int x)與method(int y)不是方法重載,不能同時(shí)存在
*/
public class Demo06Overload{
public static void main(String[] args){
//求兩個(gè)小數(shù)的和
//double sum = add(3.1,3.4);
//System.out.println("sum = " + sum);
//求兩個(gè)整數(shù)的和
//System.out.println(add(100,200));
System.out.println(add(100,200.0));
System.out.println(add(3.14,200));
}
//兩個(gè)數(shù)加法
public static int add(int a,double b) {
System.out.println("調(diào)用先int兩個(gè)數(shù)相加");
return (int)(a + b);
}
//兩個(gè)數(shù)加法
/*
c)重載與具體的變量標(biāo)識(shí)符無(wú)關(guān)
如method(int x)與method(int y)不是方法重載溢豆,不能同時(shí)存在
public static int add(int x,double y) {
System.out.println("調(diào)用先int兩個(gè)數(shù)相加");
return (int)(x + y);
}
*/
//兩個(gè)數(shù)加法
public static double add1(int a,double b) {
System.out.println("調(diào)用先int兩個(gè)數(shù)相加");
return (a + b);
}
//兩個(gè)數(shù)加法
public static double add(double a,int b) {
System.out.println("調(diào)用先double兩個(gè)數(shù)相加");
return a + b;
}
//兩個(gè)數(shù)小數(shù)加法
public static double add(double a,double b) {
System.out.println("調(diào)用兩個(gè)小數(shù)相加");
return a + b;
}
//三個(gè)數(shù)加法
public static int add(int a,int b,int c) {
System.out.println("調(diào)用三個(gè)數(shù)相加");
return a + b + c;
}
//四個(gè)數(shù)加法
public static int add(int a,int b,int c,int d) {
System.out.println("調(diào)用四個(gè)數(shù)相加");
return a + b + c + d;
}
}
1.4.3 練習(xí)
1.4.3.1 比較兩個(gè)數(shù)據(jù)是否相等蜒简。
參數(shù)類(lèi)型分別為兩個(gè)byte類(lèi)型,兩個(gè)short類(lèi)型漩仙,兩個(gè)int類(lèi)型臭蚁,兩個(gè)long類(lèi)型,并在main方法中進(jìn)行測(cè)試
public class Demo02MethodTest {
public static void main(String[] args) {
// 調(diào)用
System.out.println(compare(10, 20));//整數(shù)默認(rèn)為int類(lèi)型
System.out.println("-------------");
System.out.println(compare((byte)10, (byte)20));
System.out.println("-------------");
System.out.println(compare((short)10, (short)20));
System.out.println("-------------");
//System.out.println(compare((long)10, (long)20));
System.out.println(compare(10L, 20L));
}
// 兩個(gè)byte類(lèi)型的
public static boolean compare(byte a, byte b) {
System.out.println("byte");
// 第一種寫(xiě)法
// boolean flag = a==b?true:false;
// return flag;
// 第二種寫(xiě)法
// boolean flag = a == b;
// return flag;
// 第三種寫(xiě)法
return a == b;
}
// 兩個(gè)short類(lèi)型的
public static boolean compare(short a, short b) {
System.out.println("short");
return a == b;
}
// 兩個(gè)int類(lèi)型的
public static boolean compare(int a, int b) {
System.out.println("int");
return a == b;
}
// 兩個(gè)long類(lèi)型的
public static boolean compare(long a, long b) {
System.out.println("long");
return a == b;
}
}