Java快速入门(四)


目录:

Java快速入门(四)

方法 Method

方法定义的格式

[修饰符] 返回类型 方法名(参数类型 形参1,参数类型 形参2){
    // 方法体
    [return 返回值]; 
}
  • 当方法无返回值时,必须给出返回类型 void
  • 参数列表 / 参数清单,包含参数的个数、参数类型、 参数顺序
  • 方法签名:方法名 + 方法参数列表,判断是否是同一个方法的标准
  • 在同一个类中,方法签名是唯一的,否则编译报错
  • 考虑当调用者传入数据的范围不合理时,该如何处理(进行参数校验)

方法定义的位置

  • 在类中,其它方法之外
  • 方法之间声明顺序无规定

方法的调用

  • main 方法由 JVM 来调用
  • 使用 static修饰的方法:属于这个类本身,方法所在类名.方法名([实参 1, 实参 2, …])
  • static修饰的方法:属于该类的对象,不属于这个类本身,使用方法所在类的对象来调用,对象.方法名([实参 1, 实参 2, …])
  • 针对于有返回的方法,调用者可以用对应类型的变量去接收返回值,也可以不去接收

方法重载 Overload

作用

解决了在同一个类中相同功能由于参数列表不同造成方法名不同的问题

规则

  • 两同:同类中,方法名相同
  • 一不同:方法参数列表不同

注意:方法重载与方法的返回值类型、修饰符无关

方法参数的值传递机制

方法被调用时,方法里的参数是以值传递的方式传递的,即传递的是实参的副本

  • 参数是基本数据类型:直接传递实参值的副本
  • 参数是引用数据类型,传递的是实参所引用的十六进制地址值的副本

形参个数可变的方法

static int getSum(int ...arr){
    // 操作 arr 数组
}

int sum = getSum(1,2,3,4);
int sum = getSum();
  • 定义方法时,在最后一个形参的类型后增加三点(…),表明该形参可以接受多个参数值
  • 作用:调用者不用创建数组;调用时对应的实参可以没有(动态初始化一个数组长度为 0 的数组进行传递)
  • 本质就是一个数组参数:底层,在调用该方法的时候,用对应的实参作为元素创建一个数组,再将该数组传递给形参
  • 注意:一个方法最多只有一个可变参数,必须放在参数列表最后

递归方法

  • 一个方法的方法体实现中再次调用了方法本身
  • 递归一定要向已知方向递归

数组工具类

public class ArrayTool{
     //该类中的方法都是静态的,所以该类是不需要创造对象的
     //为了保证不让他人创建该类对象,可以将构造函数私有化
     private ArrayTool(){}
     //获取整型数组的最大值
     public static int getMax(int[] arr){
         int maxIndex = 0;
         for(int x = 1; x < arr.length; x++){
             if(arr[x] > arr[maxIndex])
                 maxIndex = x;
         }
         return arr[maxIndex];
     }
     //对数组进行选择排序
     public static void selectSort(int[] arr){
         for(int x = 0; x <arr.length -1; x++){
             for(int y = x + 1; y < arr.length; y++){
                 if(arr[x] > arr[y])
                     swap(arr,x,y);
             }
         }
     }
     //用于给数组进行元素的位置置换。
     private static void swap(int[] arr, int a,int b){
         int temp = arr[a];
         arr[a] = arr[b];
         arr[b] = temp;
     }
     //获取指定的元素在指定数组中的索引
     public static int getIndex(int[] arr, int key){
         for(int x = 0; x < arr.length; x++){
             if(arr[x] == key)
                 return x;
         }
         return -1;
     }
     //将int 数组转换成字符串,格式是:[e1,e2,...]
     public static String arrayToString(int[] arr){
         String str = "[";
         for(int x = 0; x < arr.length; x++){
             if(x != arr.length - 1)
                 str = str + arr[x] + ",";
             else
                 str = str + arr[x] + "]";
         }
         return str;
     }
 }


 class ArrayToolDemo{
     //保证程序的独立运行
     public static void main(String[] args){
         int[] arr = {4,8,2,9,7,72,6};
         int max = ArrayTool.getMax(arr);
         System.out.println("max = " + max);
         int index = ArrayTool.getIndex(arr,10);
         System.out.println("index = " + index);
     }
 }