方法和数组
方法
- Java方法是语句的集合,他们在一起执行一个功能
- 方法是解决一类问题的步骤的有序组合
- 方法包含于类或对象中
- 方法在程序中被创建,在其他地方被引用
- 设计方法的原则,一个方法只完成一个功能,这样利用后面的拓展
方法包含一个方法头和方法体`
修饰符 返回值类型 方法名(参数类型 参数名){
……
方法体
……
return 返回值;
}
- 修饰符:private,public,缺省,protected,从小到大
- 返回值类型:
- 有返回值:用数据类型修饰
- 无返回值:用void来修饰
- 方法名:
- 参数类型:
- 方法体:
- 方法调用:对象名.方法名(实参列表)方法的重载
方法的重载
重载就是在一个类中,有相同的函数名称,但形参不同的函数。
规则:
- 方法名必须相同
- 参数列表必须不同(个数不同,参数类型不同,参数排列顺序不同等)
- 方法的返回类型没限制
- 仅仅返回类型不同不能构成方法的重载
可变参数:
-
在方法声明中,在指定参数类型后加一个省略号(...)
-
一个方法只能声明一个可变参数,且它必须放在最后。
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];
数组的四个基本特点
- 其长度是确定的。数组一旦被创建,其大小就无法改变
- 其元素都是相同数据类型,不能出现混合类型
- 数组中的元素可以是任何数据类型
- 数组变量属引用类型,数组也可以看成对象,数组中的每个元素可以看成绩该对象的成员变量。数组对象本身在堆中
数组边界
- 下标合法边界:[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个不同值
- 把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模
- 如图,左边是原始数组,右边是稀疏数组