方法和数组

发布时间 2023-03-22 21:10:46作者: MePear

方法和数组

方法

  • Java方法是语句的集合,他们在一起执行一个功能
  • 方法是解决一类问题的步骤的有序组合
  • 方法包含于类或对象中
  • 方法在程序中被创建,在其他地方被引用
  • 设计方法的原则,一个方法只完成一个功能,这样利用后面的拓展

方法包含一个方法头方法体`

修饰符 返回值类型 方法名(参数类型 参数名){
	……
	方法体
	……
	return 返回值;
}
  1. 修饰符:private,public,缺省,protected,从小到大
  2. 返回值类型:
    1. 有返回值:用数据类型修饰
    2. 无返回值:用void来修饰
  3. 方法名:
  4. 参数类型:
  5. 方法体:
  • 方法调用:对象名.方法名(实参列表)方法的重载

方法的重载

重载就是在一个类中,有相同的函数名称,但形参不同的函数。

规则:

  1. 方法名必须相同
  2. 参数列表必须不同(个数不同,参数类型不同,参数排列顺序不同等)
  3. 方法的返回类型没限制
  4. 仅仅返回类型不同不能构成方法的重载

可变参数:

  • 在方法声明中,在指定参数类型后加一个省略号(...)

  • 一个方法只能声明一个可变参数,且它必须放在最后。

    public static void printMax(double... numbers){
    	if(numbers.length == 0 ){
    		System.out.println("No argument passed");
    		return;
    	}
    	double result = number[0];
    	for(int i = 1 ; i < numbers.length ; i++){
    		if(number[i] > result){
    			result = numbers[i];
    		}
    	}
    	System.out.println("the max number is : " + result);
    }
    

命令行传参

递归

递归就是A方法调用A方法,就是自己调用自己

递归结构包括两个部分:

  • 递归头:什么时候不去调用自身方法,如果没有头,就会陷入死循环
  • 递归体:什么时候需要调用自身方法
public static long f(long n) {
        if(n < 1 ){
            return 0;
        }else if (n == 1){
            return 1;
        }else{
            return n*f(n-1);
        }
    }

数组

  • 定义:数组是相同类型数据的有序集合
  • 数组描述的是相同数据类型的若干的数据,按照一定的先后次序排列组合而成
  • 每个数据称为一个数组元素,每个数组元素可以通过下标来访问它们,数组索引从0开始
  • 获取数组长度:array.length

数组的声明

dataType[] arrayName ; //首选方法 例:int[] array1 = {};
dataType arrayName[] ; //不建议用 例:int array2[] = {};

// 用new操作来新建一个数组
dataType[] arrayName = new dataType[arraySize]; // int[] nums = new int[10];

 //静态初始化:创建 + 赋值
int[] a = {1,2,3,4};
//动态初始化
int[] b = new int[10];

数组的四个基本特点

  1. 其长度是确定的。数组一旦被创建,其大小就无法改变
  2. 其元素都是相同数据类型,不能出现混合类型
  3. 数组中的元素可以是任何数据类型
  4. 数组变量属引用类型,数组也可以看成对象,数组中的每个元素可以看成绩该对象的成员变量。数组对象本身在堆中

数组边界

  • 下标合法边界:[0,length-1]
  • ArrayIndexOfBoundsException:数组下标越界异常

多维数组

  • 多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组
  • 二维数组int a[][] = new int[2][5]

冒泡排序

时间复杂度O(n²)

public static int[] sort(int[] array) {
    for (int i = 0; i < array.length - 1; i++) {
        for (int j = 0; j < array.length - 1 - i; j++) {
            if (array[j + 1] > array[j]) {
                int result = array[j + 1];
                array[j + 1] = array[j];
                array[j] = result;
            }
        }
    }
    return array;
}

稀疏数组

  • 当一个数组中大部分元素为0,或者为同一值的数组时,可以用稀疏数组来保存该数组。
  • 处理方式:
    • 记录数组一共有几行几列,有多少个不同值,如(6,7,8),有6行7列8个不同值
    • 把具有不同值的元素和行列记录在一个小规模的数组中,从而缩小程序的规模
    • 如图,左边是原始数组,右边是稀疏数组