1.1 方法重載的概述和特點
方法重載概述
在同一個類中,允許存在一個以上的同名方法,只要它們的參數個數或者參數類型不同即可。
方法重載特點
與返回值類型無關,只看方法名和參數列表
在調用時,虛擬機通過參數列表的不同來區分同名方法
1.1.1 案例代碼
package com.itheima_03;
/*
* 方法重載:在同一個類中,出現了方法名相同的情況。
*
* 方法重載的特點:
* 方法名相同,參數列表不同。方法重載與返回值無關。
*
* 參數列表不同:
* 參數的個數不同。
* 參數對應的數據類型不同。
*
* 注意事項:
* 在調用方法的時候,java虛擬機會根據方法名及參數列表的不同來區分方法。
*/
public class MethodDemo {
public static void main(String[] args) {
//定義兩個變量
int a = 10;
int b = 20;
//求和
int result = sum(a,b);
System.out.println("result:"+result);
//定義變量
int c = 30;
//int result2 = sum2(a,b,c);
int result2 = sum(a,b,c);
System.out.println("result2:"+result2);
}
/*
public static int sum(int x,int y) {
return x + y;
}
*/
public static float sum(float a,float b) {
return a + b;
}
//求三個數據的和
/*
public static int sum2(int a,int b,int c) {
return a + b + c;
}
*/
public static int sum(int a,int b,int c) {
return a + b + c;
}
//求兩個數據的和
public static int sum(int a,int b) {
/*
int c = a + b;
return c;
*/
return a + b;
}
}
1.2 方法重載練習之比較兩個數據是否相等
1.2.1代碼案例
package com.itheima_03;
/*
* 需求:比較兩個數據是否相等。
* 參數類型分別為兩個byte類型,兩個short類型,兩個int類型,兩個long類型,
* 并在main方法中進行測試
*/
public class MethodTest {
public static void main(String[] args) {
//System.out.println(compare(10, 20));
//System.out.println(compare((byte)10, (byte)20));
//System.out.println(compare((short)10, (short)20));
System.out.println(compare(10L, 20L));
}
/*
* 兩個byte類型
*
* 兩個明確:
* 返回值類型:boolean
* 參數列表:byte a,byte b
*/
public static boolean compare(byte a,byte b){
/*
if(a == b) {
return true;
}else {
return false;
}
*/
System.out.println("byte");
return a == b;
}
//兩個short類型
public static boolean compare(short a,short b){
System.out.println("short");
return a == b;
}
//兩個int類型
public static boolean compare(int a,int b){
System.out.println("int");
return a == b;
}
//兩個long類型
public static boolean compare(long a,long b){
System.out.println("long");
return a == b;
}
}
2.1 方法中參數傳遞
2.1.1 方法參數是基本類型的情況和圖解
方法的參數是基本類型的時候:
形式參數的改變不影響實際參數。
形式參數:用于接收實際數據的變量
實際參數:實際參與運算的變量
2.1.1.1 代碼案例
public class ArgsDemo {
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
}
}
2.1.1.2方法的形式參數是基本類型圖解
Parameter_Diagram.png
2.1.2 方法參數是引用類型的情況和圖解
2.1.2.1代碼案例
package com.itheima;
/*
* 基本數據類型作為參數傳遞,形式參數的改變不影響實際參數
* 引用數據類型作為參數傳遞,形式參數的改變直接影響實際參數
*/
public class ArgsDemo2 {
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5 };
for (int x = 0; x < arr.length; x++) {
System.out.println(arr[x]);//1,2,3,4,5
}
change(arr);
for (int x = 0; x < arr.length; x++) {
System.out.println(arr[x]);//1,4,3,8,5
}
}
public static void change(int[] arr) {
for (int x = 0; x < arr.length; x++) {
//如果數組元素是偶數,值就變成了以前的2倍
if (arr[x] % 2 == 0) {
arr[x] *= 2;
}
}
}
}
2.1.2.2方法的形式參數是引用類型圖
Parameter_Diagram01.png
2.2 方法操作數組練習
2.2.1方法練習之數組遍歷
需求:把遍歷數組改進為方法實現,并調用方法
2.2.2代碼案例
package com.itheima;
/*
* 需求:把遍歷數組改進為方法實現,并調用方法
*/
public class MethodTest {
public static void main(String[] args) {
//定義數組
int[] arr = {11,22,33,44,55};
//調用方法
//printArray(arr);
//我們已經實現了需求,但是我覺得這個效果不好看,我想要如下的效果可以嗎
//[元素1, 元素2, 元素3, ...]
//我們的結果應該是這樣的:[11, 22, 33, 44, 55]
printArray(arr);
}
/*
* 遍歷數組的方法。
*
* 兩個明確:
* 返回值類型:void
* 參數列表:int[] arr
*/
/*
public static void printArray(int[] arr) {
for(int x=0; x
System.out.println(arr[x]);
}
}
*/
public static void printArray(int[] arr) {
System.out.print("[");
for(int x=0; x
if(x == arr.length-1) {
//判斷是否是最后一個元素
System.out.print(arr[x]);
}else {
System.out.print(arr[x]+", ");
}
}
System.out.println("]");
}
}
2.2.3方法練習之數組獲取最值
需求:把獲取數組最值改進為方法實現,并調用方法.
2.2.4 代碼案例
package com.itheima;
/*
* 需求:把獲取數組最值改進為方法實現,并調用方法
*/
public class MethodTest2 {
public static void main(String[] args) {
//定義數組
int[] arr = {24,36,90,75,81};
//調用方法
int max = getMax(arr);
//輸出結果
System.out.println("max:"+max);
}
/*
* 數組獲取最值的方法
*
* 兩個明確:
* 返回值類型:int
* 參數列表:int[] arr
*/
public static int getMax(int[] arr) {
//定義參照物
int max = arr[0];
//遍歷,獲取元素,進行比較
for(int x=1; x
if(arr[x] > max) {
max = arr[x];
}
}
return max;
}
}