方法
(一)方法概述
方法是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集
注意:
(1)方法必须先创建才可以使用,该过程为方法定义
(2)方法创建后并不是直接运行的,需要手动使用后才执行,该过程成为方法调用。
(二)方法的定义和调用
1.方法的定义
格式:
public static void 方法名(){
//方法体
}
2.方法的调用
格式:
方法名();
例子:判断一个数是否为偶数
public static void main(String[] args) {
isEvenNumber(); // 10是偶数
}
public static void isEvenNumber() {
int number = 10;
if(number%2 == 0){
System.out.println(number+"是偶数");
} else {
System.out.println(number+"不是偶数");
}
}
(三)带参数方法的定义和调用
1.带参数方法定义
格式:
public static void 方法名(参数){......}
格式(单个参数):
public static void 方法名 (数据类型 变量名){......}
范例(单个参数):
public static void isEvenNumber(int number){......}
格式(多个参数):
public static void 方法名(数据类型 变量名1,数据类型 变量名2, ......){......}
范例(多个参数):
public static void getMax(int number1, int number2, ......) {......}
2.带参数方法调用
格式:
方法名(参数);
格式(单个参数):
方法名(变量名/常量值)
范例(单个参数):
isEvenNumber(5);
格式(多个参数):
方法名(变量名1/常量值1,变量名2/常量值2);
范例(多个参数):
getMax(5,6)
注意:方法调用时,参数的数量与类型必须与方法定义中的设置相匹配,否则程序将会报错。
3.形参与实参
形参:方法定义中的参数
等同于变量定义格式,例如:int number
实参:方法调用中的参数
等同于使用变量或者常量,例如 10 number
(四)带返回值方法定义和调用
1.带返回值方法定义
格式:
public static 数据类型 方法名(参数){
return 数据; // 此处数据的数据类型为方法名前定义的数据类型!
}
范例:
public static boolean isNumber(int number){
return true; // true为boolean类型
}
2.带返回值方法调用
格式1:
方法名(参数);
范例:
isEvenNumber(5);
格式2(通常使用):
数据类型 变量名 = 方法名(参数);
范例:
boolean flag = isEvenNumber(5);
3.例子(获取两个数中的最大值)
public static void main(String[] args) {
int result = getMax(10,20);
System.out.println(result);
}
public static int getMax(int a,int b){
if (a > b){
return a ;
} else {
return b;
}
}
(五)方法的注意事项
1.方法的注意事项
- 方法不能嵌套定义
- void 表示无返回值,可以省略return,也可以单独的书写return,后面不加数据。
2.方法的通用格式
(1)格式
public static 返回值类型 方法名(参数){
方法体;
return 数据;
}
public static 修饰符,目前先记住这个格式
返回值类型 方法操作完毕之后返回的数据的数据类型
如果方法操作完毕,没有数据返回,这里写void,而且方法体中一般不写return
方法名 调用方法时候使用的标识
参数 由数据类型和变量名组成,多个参数之间用逗号隔开
方法体 完成功能的代码块
return 如果方法操作完毕,有数据返回,用于把数据返回给调用者
(2)定义方法时的两个明确
明确返回值类型:主要是明确方法操作完毕之后是否有数据返回,如果没有,写void;如果有,写对应的数据类型
明确参数:主要是明确参数的类型和数量
(3)调用方法时
void类型的方法,直接调用即可
非void类型的方法,推荐使用变量接收调用
(六)方法重载
1.概述
方法重载指在同一个类中定义的多个方法之间的关系,满足下列条件的多个方法相互构成重载
- 多个方法在同一个类型
- 多个方法具有相同的方法名
- 多个方法的参数不相同,类型不同或者数量不同
2.特点
- 重载仅对应方法的定义,与方法的调用无关,调用方式参照标准格式
- 重载仅针对同一个类中方法的名称与参数进行识别,与返回值无关,换句话说不能通过返回值来判定两个方法是否相互构成重载
public static int sum(int a, int b) {
return a + b;
}
public static double sum(double a, double b) { //方法名相同,参数的类型不同
return a + b;
}
public static int sum(int a, int b, int c) { //方法名相同,参数的数量不同
return a + b + c;
}
3.例子(比较两个数大小【全整数类型比较】)
public static void main(String[] args) {
System.out.println(compare(10,20));
System.out.println(compare((byte)10,(byte)20)); // 强制转换为byte类型
System.out.println(compare((short)10,(short)20)); // 强制转换为short类型
System.out.println(compare(10L,20L)); // 强制转换为long类型
}
public static boolean compare(int a,int b){
System.out.println("int");
return a == b;
}
public static boolean compare(byte a,byte b){
System.out.println("byte");
return a == b;
}
public static boolean compare(short a,short b){
System.out.println("short");
return a == b;
}
public static boolean compare(long a,long b){
System.out.println("long");
return a == b;
}
(七)方法的参数传递
1.方法的参数传递(基本类型)
对于基本数据类型的参数,形式参数的改变,不影响实际参数的值
2.方法的参数传递(引用类型)
对于引用类型的参数,形式参数的改变,影响实际参数的值
(八)案例
1.数组遍历
需求:设计一个方法用于数组遍历,要求遍历的结果是在一行上的。例如[11,22,33,44,55]
System.out.println("内容"); //输出内容并换行
System.out.println("内容"); //输出内容不换行
System.out.println(); //起到换行的作用
public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5};
printArr(arr);
}
public static void printArr(int[] arr) {
System.out.print("[");
for (int x = 0; x < arr.length; x++) {
if (x == arr.length - 1) {
System.out.print(arr[x]);
} else {
System.out.print(arr[x] + ", ");
}
}
System.out.println("]");
}
2.数组最大值
需求:设计一个方法用于获取数组中元素的最大值,调用方法并输出结果
public static void main(String[] args) {
int[] arr = {22, 44, 55, 11, 33};
int result = getMax(arr);
System.out.println("最大值为:" + result);
}
public static int getMax(int[] arr) {
int max = arr[0];
for (int i = 1; i < arr.length; i++) {
if(arr[i] > max){
max = arr[i];
}
}
return max;
}