什么是方法?
方法是程序员中最小的执行单元
Java的方法类似于其它语言的函数,用来完成特定功能
方法有什么作用?
重复的代码,具有独立功能的代码可以抽取到方法中
方法的好处
可以提高代码的复用性
可以提高代码的可维护性
方法的格式
//定义方法
public static void 方法名(){
方法体;
}
要定义在主方法外面,类的里面
注意:方法名用驼峰命名(一个单词全部小写,多个单词第二个字母首字母大写)
//调用方法
play();
public static void main(String[] args) {
play();//调用下面的方法
}
//定义方法
public static void play(){
System.out.println("开局");
System.out.println("选英雄");
System.out.println("对线");
System.out.println("打团");
System.out.println("击杀");
System.out.println("买装备");
System.out.println("刷野怪");
System.out.println("被团没");
System.out.println("失败,喷队友");
}
方法的执行过程
看到方法进入方法,执行完毕回到调用处
public static void main(String[] args) {//1,先进主方法
System.out.println("a");//2,执行主方法里面的语句
method();//3,看见方法进入方法
System.out.println("b");//6,再输出打印
}
private static void method() {
System.out.println("c");//4,执行方法里面的语句
System.out.println("d");//5,执行完之后再返回主方法
}
//执行后输出acdb
带参数的方法
//定义方法
public static void 方法名(参数1,参数2,,,,){
方法体;
}
//调用方法
play(变量1,变量2,,);
注意:方法调用时,参数的数量和类型必须与方法定义中小括号里面的变量一一对应,否则程序就会报错
public static void main(String[] args) {
method(10,20);
}
private static void method(int a,int b) {
int sum = a+b;
System.out.println(sum);
}
形参和实参
形参:全称形式参数,是指方法定义中的参数
实参:全称实际参数,方法调用中的参数
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你要求的圆的半径");
int r = sc.nextInt();
method(r);
}
private static void method(int r) {
double zc = 2*3.14*r*r;
System.out.println(zc);
}
带返回值的方法
在调用处要根据方法的结果,去编写另外一段代码
//定义方法
public static 返回值类型 方法名(参数1,参数2,,,,){
方法体;
return 返回值;
}
调用(三个调用格式)
1,直接调用
方法名(实参)
2,数值调用
整数类型 变量名 = 方法名 (实参)
3,输出调用
System.out.println(实参)
public static void main(String[] args) {
int sum1= getsum(10,20,30);
int sum2 = getsum(40,20,10);
int sum3 = getsum(40,30,10);
int sum= sum1+sum2+sum3;
System.out.println(sum);
}
private static int getsum(int a,int b,int c) {
int m = a+b+c;
return m;
}
return关键字
方法没有返回值:可以省略不写,如果书写,表示结束方法
方法有返回值:必须要写,表示结束方法和返回结果
public static void main(String[] args) {
int sum1=test(80,40);
int sum2=test(50,90);
int sum3=test(20,20);
System.out.println(sum1);
System.out.println(sum2);
System.out.println(sum3);
}
public static int test(int testval,int target){
if(testval>target)
return 1;
else if(testval<target)
return -1;
else
return 0;
}
方法的重载
在同一个类中,方法名相同,参数不同的方法(个数不同,类型不同,顺序不同不建议)。与返回值无关。
java虚拟机会通过参数的不同来区分同名的方法
public static void main(String[] args) {
test(10,20);//整数默认是int
}
public static void test(int a,int b){
System.out.println("int");
System.out.println(a==b);
}
public static void test(byte i,byte z){
System.out.println("byte");
System.out.println(i==z);
}
public static void test(long i,long z){
System.out.println("long");
System.out.println(i==z);
}
注意:
方法不调用就不执行。
方法与方法之间时平级关系,不能相互嵌套定义。
方法的编写顺序和执行顺序无关。
方法的返回值类型为void,表示该方法没有返回值,没有返回值的方法可以省略return语句不写,如果要编写return,后面不能跟具体的数据。
return语句下面,不能编写代码,因为永远执行不到,属于无效的代码。