(1)、什么是方法?
答:方法是程序中最小的执行单元。
(2)、实际开发中,什么时候用到方法?
答:重复的代码、具有独立功能的代码可以抽取到方法中,用的时候直接调用该方法。
(3)、实际开发中,方法有什么好处?
可以提高代码的复用性;可以提高代码的可维护性。
1、补充内容:
把一些代码打包在一起,用到的时候就调用。
(1)、方法的定义是指:
把一些代码打包在一起,该过程称为方法定义。
(2)、方法调用是指:
方法定义之后并不是直接运行的,需要手动调用之后才能执行,该过程称为方法调用。
(3)、方法需要先定义后调用,否则系统会报错。
(4)、方法的定义要写在main方法的外面,类的里面。
2、最简单的方法定义和调用
定义格式如下:
public static void 方法名(){方法体(就是打包起来的代码);
}定义范例如下:
public static void playGame(){七个打印语句;
}调用格式如下:
方法名();调用范例如下:
playGame();
实战:利用方法最简单的格式打印
package sss;
public class test{public static void main(String[] arg){System.out.print("a" + " ");//调用方法printGRInfo();System.out.print("b" + " ");}//定义方法 public static void printGRInfo(){System.out.print("c" + " ");//调用方法ggg();System.out.print("d" + " ");}//定义方法public static void ggg(){int num1 = 10;int num2 = 20;int sum = num1 + num2;System.out.print(sum + " ");}
}输出结果为:a c 30 d b
3、带参数的方法定义和调用
方法的定义格式如下:
public static void 方法名(参数){打包的代码
}public static void 方法名(参数1,参数2,...){打包的代码
}范例如下:
public static void method(int number){打包的代码
}public static void getSum(int number1,int number2){打包的代码
}
方法的调用格式如下:
1、单个参数时
方法名(参数);
范例1:method(10);
范例2:method(变量);2、多个参数
方法名(参数1,参数2,...);
范例1:getSum(10,20);
范例2:getSum(变量1,变量2);注意事项:
方法调用时,形参和实参必须一一对应,否则程序将报错。补充:
形参:全称形式参数,是指方法定义中的参数。
实参:全称实际参数,方法调用中的参数。
实战:求圆的面积
package lishuqiang;
import java.util.Scanner;public class sss {public static void main(String[] arg){Scanner sc = new Scanner(System.in);int a Int(); //键盘录入圆的半径printGRInfo(a); //方法的调用printGRInfo(2); //方法的调用}//定义方法public static void printGRInfo(double r){double area = 3.14*r*r;System.out.print("面积为:" + area);}}
4、带返回值方法的定义与调用
方法的返回值其实就是方法运行的最终结果。
方法的定义格式如下:
public static 返回值类型 方法名(参数1,参数2,...){方法体;return 返回值;
}范例如下:
public static int getSum(int a,int b){int c = a + b;return c;
}
方法的调用如下:
1、直接调用:
方法名(实参);
例如:getSum(1,2);
说明:适合返回值类型是void类型的,方法最终没有产出内容,只是想在方法内打印某些内容。但是返回值不是void的也可以用,只是表示某些内容的执行。2、赋值调用:
数据类型 变量名 = 方法名(实参);
例如:int sum = getSum(1,2);
说明:返回值为void类型的不能用,因为void类型的没有返回值,不能赋值。适用于返回值类型不是void类型的,作用是可以使用该方法产出的结果。3、输出调用:
System.out.println(方法名(实参));
例如:System.out.println(getSum(1,2));
说明:返回值为void类型的不能用,因为void类型的没有返回值。适用于返回值类型不是void类型的,作用只是表示某些结果的打印。
实战:定义方法,比较两个长方形的面积。
package lishuqiang;
import java.util.Scanner;public class sss {public static void main(String[] arg){//键盘录入长方形的长和宽的值Scanner sc = new Scanner(System.in);System.out.println("请输入四个数据,分别代表两个长方形的长和宽");double L1 Int();double w1 Int();double L2 Int();double w2 Int();//调用计算面积的方法double area1 = printGRInfo(L1,w1);double area2 = printGRInfo(L2,w2);if(area1 > area2){System.out.println("第一个长方形的面积大");} else if(area1 < area2){System.out.println("第二个长方形的面积大");} else{System.out.println("两个长方形的面积一样大");}}//定义方法public static double printGRInfo(double len,double width){double area = len*width;return area;}
}
5、方法的注意事项
1、方法不调用就不执行。
2、方法和方法之间是平级关系,不能互相嵌套定义,但是可以嵌套调用。
3、方法的编写顺序和执行顺序无关。
4、方法的返回值类型为void,表示该方法没有返回值,没有返回值的方法可以省略return语句不写。如果要编写return,后面不能跟具体的数据。
5、return语句下面,不能编写代码,因为永远执行不到,属于无效的代码。
6、return关键字:
方法没有返回值:可以省略不写。如果写,表示结束方法。
方法有返回值:必须要写。表示结束方法和返回结果。如果方法的返回值类型不为void,则一定要写return语句。
1、有一些功能逻辑相同的代码,如果定义不同的方法名,就导致记忆量非常大,不好用,为了简化这个过程,将相同的或者相似功能逻辑的代码,都使用同一个方法名。(例如加法运算,参数不同的情况下就利用重载)
2、在同一个类中,定义了多个同名的方法(方法名前的返回值变量可以不同),这些同名的方法具有同种的功能。每个方法具有不同的参数类型或参数个数,这些同名的方法,就构成了重载关系。
3、简单记忆就是:同一个类中,方法名相同(方法名前的返回值变量可以不同),参数不同的方法构成了重载关系,与返回值无关。(参数不同指个数不同、类型不同、顺序不同。)
4、Java虚拟机会通过参数的不同来区分同名的方法。
实战如下:
需求:使用方法重载的思想,设计比较两个整数是否相同的方法。
要求:兼容全整数类型(byte、short、int、long)
package lishuqiang;public class sss {public static void main(String[] arg){compare(10,20);System.out.println("------------");byte m = 11;byte n = 15;compare(m,n);}//用方法的重载定义方法public static void compare(byte a1,byte a2){System.out.println("byte");System.out.println(a1 == a2);}public static void compare(short b1,short b2){System.out.println("short");System.out.println(b1 == b2);}public static void compare(int c1,int c2){System.out.println("int");System.out.println(c1 == c2);}public static void compare(long d1,long d2){System.out.println("long");System.out.println(d1 == d2);}
}
1、数组遍历。需求:设计一个方法用于数组遍历,要求遍历的结果是在一行上。
例如:[11, 22, 33, 44, 55]
package lishuqiang;public class sss {public static void main(String[] arg){int[] arr = {11,22,33,44,55};printfArr(arr);}//定义方法public static void printfArr(int[] arr){System.out.print("[");for (int i = 0; i < arr.length; i++) {if(i == arr.length -1){System.out.print(arr[i]+"]");} else{System.out.print(arr[i]+", ");}}}
}
补充内容:
System.out.println("abc"); //先打印abc,再进行换行
System.out.print("abc"); //只打印abc,不换行
System.out.println(); //不打印任何数据,只做换行处理
2、数组最大值。
需求:设计一个方法求数组的最大值,并将最大值返回。
package lishuqiang;public class sss {public static void main(String[] arg){int[] arr = {11,22,33,44,16};int Max = arrMax(arr);System.out.println("最大值为" + Max);}//定义方法public static int arrMax(int[] arr){int max = arr[0];for (int i = 1; i < arr.length; i++) {if(arr[i] > max){max = arr[i];}}return max;}
}
3、判断是否存在。
需求:定义一个方法,判断数组中的某一个数是否存在,将结果返回给调用处。
package lishuqiang;
import java.util.Scanner;public class sss {public static void main(String[] arg){int[] arr = {11,22,33,44,16};Scanner sc = new Scanner(System.in);int num = sc.nextInt();boolean relout = arrMax(arr,num);System.out.println(relout);}//定义方法public static boolean arrMax(int[] arr,int number){for (int i = 0; i < arr.length; i++) {if(arr[i] == number){return true;}}return false;}
}
补充内容:
return和break关键字的区别:
return:其实跟循环没什么关系,跟方法有关系,表示 方法结束 或者 返回结果如果执行到了return,那么整个方法全部结束,里面的循环也会随之结束。
break关键字:跟方法没什么关系,结束循环或者switch的。
4、复制数组。
需求:定义一个方法copyOfRange(int[] arr,int from,int to)
功能:将数组arr中从索引from(包含from)开始。到索引to结束(不包含to)的元素复制到新的数组中,将新的数组返回。
package Test03;
import java.util.Scanner;public class test05 {public static void main(String[] arg){int[] arr = {1,2,3,4,5,6,7,8,9};int[] newArr = copyOfRange(arr,3,7); //调用方法for (int i = 0; i < newArr.length; i++) { //打印新获得的数组System.out.print(newArr[i]+" ");}}//定义方法,其中因为返回值为整数型数组,所以返回值类型处写int[]public static int[] copyOfRange(int[] arr,int from,int to){int[] arr2 = new int[to-from];int j = 0;for(int i = from;i < to;i++){arr2[j] = arr[i];j++;}return arr2; //返回值类型为数组时,只写数组名}
}
/*算法分析:假如数组为 1,2,3,4,5,6,7,8,9则对应下标为 0,1,2,3,4,5,6,7,8。若复制4,5,6,7,则四个数对应的数组元素下表分别为 3,4,5,6又因为复制时含from对应的元素,不含to对应的元素,所以复制时对应的from值(元素下标)为3,to值(元素下标)为7*/
P78 方法-9-方法的基本内存原理
P79 方法-10-什么是基本数据类型和引用数据类型
P80 方法-11-方法的值传递
本文发布于:2024-01-29 11:31:22,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170649908714967.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |