一、方法的定义
1、完整格式:修饰符 返回值类型 方法名(形参列表){
方法体代码(需要执行的功能代码)
return返回值;
}
示例:public static int add (int a,int b){
int c = a + b;
return c;
}
调用方法:方法名(形参);如:add(a:1,b:2);)
分为赋值调用、输出调用、直接调用。返回值为空的只能直接调用。
注意:
方法写好之后,调用它才能跑起来。
方法声明了具体的返回值类型,内部return返回值必须与其对应。
形参列表可以有多个或没有,形参之间用“,”隔开,且不能给初始值
方法不需要返回结果,返回值类型必须声明成void(无返回值),此时方法内部不可以使用return返回数据。
方法如果没有参数,或返回值类型声明为void可以称为无参数,无返回值的方法,以此类推。
2、方法的常见问题
方法的编写顺序无所谓
方法与方法之间是平级关系,不能嵌套。
方法返回值类型为void,则方法内部不能使用return返回数据,如果返回值写了具体类型,则方法中必须书写对应的return返回值类型。
return语句下面不能再编写代码,因为永远执行不到属于无效代码。
方法不调用则不执行,调用时必须严格匹配形参。
有返回值的方法调用时可以选择定义变量接收结果,或者直接输出调用,甚至直接调用;无返回值方法的调用只能直接调用一次。
二、方法案例
1、最大值
import java.util.Scanner;
public class text {
public static void main(String[] args) {
int[] A = new int[3];
System.out.println(max(A));
}
public static int max(int[] arr){
Scanner sc = new Scanner(System.in);
for (int i = 0; i < arr.length; i++) {
arr[i]=sc.nextInt();
}
int max = arr[0];
for (int i = 0; i < arr.length;i++) {
if (max<arr[i]) {
max=arr[i];
}
}
return max;
}
}
2、奇偶性
import java.util.Scanner;
public class text {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入你要判断的数,该数必须是正整数");
int n = sc.nextInt();
check(n);
}
public static void check(int n){
if (n%2==0){
System.out.println("该数为偶数");
}else {
System.out.println("该数为奇数");
}
}
}
3、1--n的和
import java.util.Scanner;
public class text {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入n的值");
int n = sc.nextInt();
System.out.println("1--n的和为:"+sum(n));
}
public static int sum(int n){
int sum = 0;
for (int i = 1; i <= n; i++) {
sum += i;
}
return sum;
}
}
三、方法在内存中的调用流程
方法未被调用时,在方法区以.class文件存储;被调用时,在栈内存运行。
四、方法参数的传递机制
形参:定义方法时定义的变量
实参:方法内部定义的变量
基本类型参数传递机制:值(数据值)传递,传递的是实参存储的值,调用方法时实参会拷贝一份给所调用的方法进行使用。
引用类型参数传递机制:值(地址值)传递,传递的是引用类型参数的地址,引用类型参数会在堆内存中存储一旦修改,再次访问时就是修改后的值。
五、案例
1、打印数组内容:
public class text {
public static void main(String[] args) {
int[] arr = {12,24,15,69};
printArr(arr);
int[] arr1 = {};
int[] arr2 = null;
System.out.println();
printArr(arr1);
System.out.println();
printArr(arr2);
}
public static void printArr (int[] arr){
System.out.print("该数组内容为:[");
if(arr!=null&&arr.length>0) {
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.print(i == arr.length - 1 ? arr[i] : arr[i] + ",");
}
}
System.out.print("]");
}
}
2、查询数字在数组中的索引(无则输出-1):
import java.util.Scanner;
public class text {
public static void main(String[] args) {
Scanner SC = new Scanner(System.in);
int[] arr = {12,23,45,65};
int num = SC.nextInt();
int index = seach(arr,num);
System.out.println(index==-1?"查无此元素"+index:"其索引是:"+index);
}
public static int seach(int[] arr,int num){
for (int i = 0; i < arr.length; i++) {
if(arr[i]==num){
return i;
}
}return -1;
}
}
3、判断数组是否一致:
public class text {
public static void main(String[] args) {
int[] arr1 ={1,1,3};
int[] arr2 ={1,1,3};
System.out.println("两个数组是否一致:"+checkArray(arr1,arr2));
}
public static boolean checkArray(int[] arr1,int[] arr2){
for (int i = 0; i < arr1.length; i++) {
if (arr1[i]!=arr2[i]&&arr1.length==arr2.length){//此处必须用不等于判断,否则有歧义。
return false;
}
}
return true;
}
}
方法的定义、方法案例、方法在内存中的调用流程、方法参数的传递机制、实践案例
于 2022-04-21 20:34:04 首次发布