方法(method):是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集
注意
方法必须先创建才可以使用,该过程称为方法定义
方法创建后并不是直接运行的,需要手动使用后才执行,该过程称为方法调用
方法定义
格式: public static void 方法名 ( ) {
//方法体
}
方法调用
格式: 方法名 ( ) ;
注意:方法必须先定义后调用,否则程序将报错
带参数方法定义
格式: public static void 方法名 ( 参数 ) { … … }
格式(单个参数): public static void 方法名 ( 数据类型 变量名 ) { … … }
格式(多个参数): public static void 方法名 ( 数据类型 变量名1 ,数据类型 变量名2 ,…… ) { … … }
注意
方法定义时,参数中的数据类型与变量名都不能缺少,缺少任意一个程序将报错
方法定义时,多个参数之间使用逗号( ,)分隔
带参数方法调用
格式: 方法名 ( 参数 ) ; 格式(单个参数): 方法名 ( 变量名/常量值 ) ; 格式(多个参数): 方法名 ( 变量名1/常量值1 ,变量名2/常量值2 ) ;
注意:
方法调用时,参数的数量与类型必须与方法定义中的设置相匹配,否则程序将报错
形参和实参
形参
方法定义中的参数
等同于变量定义格式,例如:int number
实参
方法调用中的参数
等同于使用变量或常量,例如: 10 number
带返回值方法定义
格式: public static 数据类型 方法名 ( 参数 ) {
return 数据 ;
}
注意:
方法定义时return后面的返回值与方法定义上的数据类型要匹配,否则程序将报错
带返回值方法调用
格式1: 方法名 ( 参数 ) ;
格式2: 数据类型 变量名 = 方法名 ( 参数 ) ;
注意:
方法的返回值通常会使用变量接收,否则该返回值将无意义
注意事项
方法不能嵌套定义
void表示无返回值,可以省略return,也可以单独的书写return,后面不加数据
通用格式
格式: public static 返回值类型 方法名(参数) {
方法体;
return 数据 ;
}
解释
public static 修饰符,目前先记住这个格式
返回值类型 方法操作完毕之后返回的数据的数据类型,如果方法操作完毕,没有数据返 回,这里写void,而且方法体中一般不写return
方法名 调用方法时候使用的标识
参数 由数据类型和变量名组成,多个参数之间用逗号隔开
方法体 完成功能的代码块
return 如果方法操作完毕,有数据返回,用于把数据返回给调用者
定义方法时,要做到两个明确
明确返回值类型:主要是明确方法操作完毕之后是否有数据返回,如果没有,写void;如果有,写对应的数据类型
明确参数:主要是明确参数的类型和数量
调用方法时
void类型的方法,直接调用即可
非void类型的方法,推荐用变量接收调用
概述
方法重载指同一个类中定义的多个方法之间的关系,满足下列条件的多个方法相互构成重载
多个方法在同一个类中
多个方法具有相同的方法名
多个方法的参数不相同,类型不同或者数量不同
特点
重载仅对应方法的定义,与方法的调用无关,调用方式参照标准格式
重载仅针对同一个类中方法的名称与参数进行识别,与返回值无关,换句话说不能通过返回 值来判定两个方法是否相互构成重载
public class MethodDemo {
public static void main(String[] args) {
//调用方法
int result = sum(10, 20);
System.out.println(result);
double result2 = sum(10.0, 20.0);
System.out.println(result2);
int result3 = sum(10, 20, 30);
System.out.println(result3);
}
//1、求两个int类型数据和的方法
public static int sum(int a, int b) {
return a + b;
}
//2、求两个double类型数据和的方法
public static double sum(double a, double b) {
return a + b;
}
//3、求三个int类型数据和的方法
public static int sum(int a, int b, int c) {
return a + b + c;
}
}
练习:
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));
}
//int
public static boolean compare(int a, int b) {
System.out.println("int");
return a == b;
}
//byte
public static boolean compare(byte a, byte b) {
System.out.println("byte");
return a == b;
}
//short
public static boolean compare(short a, short b) {
System.out.println("int");
return a == b;
}
//long
public static boolean compare(long a, long b) {
System.out.println("long");
return a == b;
}
}
方法的参数传递
基本类型
对于基本数据类型的参数,形式参数的改变,不影响实际参数的值
public class CanShuChuanDi01 {
public static void main(String[] args) {
int number = 100;
System.out.println("调用change方法前:" + number);
change(number);
System.out.println("调用change方法后:" + number);
}
public static void change(int number) {
number = 200;
}
}
结果:
调用change方法前:100
调用change方法后:100
引用类型
对于引用类型的参数,形式参数的改变,影响实际参数的值
public class CanShuChuanDi02 {
public static void main(String[] args) {
int [] arr = {10,20,30};
System.out.println("调用change方法前:" + arr[1]);
change(arr);
System.out.println("调用change方法后:" + arr[1]);
}
public static void change(int [] arr) {
arr[1]= 200;
}
}
结果:
调用change方法前:20
调用change方法后:200



