阶段性更新~~~
1. 方法的定义
语法:
访问权限修饰符[其他的修饰符 如static] 返回值类型 方法名(参数类型1 形参1 参数类型2 形参2 ......){
// 方法体
return 返回值;
}
格式说明:
修饰符: 比如 public static等等;
public: 访问权限修饰符
static: 静态修饰符, 描述的方法可以直接被调用
返回值类型: 就是功能结果的数据类型;
void:
1.没有返回值类型或者说不确定用void;
2.如果返回值类型是void, 方法体内可以不写 return
方法名: 小驼峰式
参数: 如果有多个的话用逗号, 分开
结合上一篇java编程基础所学举例:
// 写一个方法,传入一个数值, 在控制台打印出对应行数的星星
import java.util.Scanner; // 引入工具类
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in); // 实例化
System.out.println("请输入您想要打印星星的行数");
int num = input.nextInt();
printStar(num); // 静态方法的调用
}
public static void printStar(long line){
for (int i=1; i<= line; i++){ // 双重循环,控制行
for (int j=1; j<=i; j++){
System.out.print("*");
};
System.out.println(); // 目的是换行
}
}
}
方法的重载:
在类中可以创建多个方法,他们拥有相同的名字, 但是具有不同的参数和不同的定义, 返回值不能做为重载的条件,举例:
public void method(int a){ ...... }
public void method(char c){ ...... }
2. 数组的定义
4种方式:
1. int[] scores = new int[3];
2. int[] scores;
scores = new int[3];
3. int[] scores = new int[]{56, 78, 89};
4. int[] scores = { 56, 67, 78 };
3. 数组的遍历
前情提要:
1.x.length: 取到数组的长度
2.scores[...]: ...代表下标0, 1, 2 ... 下标来获取到元素
遍历的2种方式:
int[] scores = {56, 57, 58};
// 1. for循环
int num = scores.length;
for(int i=0; i<num; i++){
System.out.print(scores[i]);
}
// 2. foreach
for (int x:scores){
System.out.print(x);
}
可变参数: 方法的参数中最后一个参数若为数组形式,可使用可变参数的写法
public static void main(int ...x){
System.out.print("x是数组, 且他的长度是" + x.length);
}
遍历数组常会遇到的两个问题:
1. 空指针异常(NullPointerException)
举例:
int [] scores = []; // 定义一个空数组或null
System.out.print(scores.length); // 这个时候会报错(java.lang.NullPointerException), 叫空指针异常;
2. 数组越界异常(ArrayIndexOutOfBoundsException)
举例:
int [] scores = {45, 56, 67}; // 定义一个空数组或null
System.out.print(scores[5]); // 这个时候会报错(java.lang.ArrayIndexOutOfBoundsException), 叫下标越界异常;
多维数组
: 就是数组内的元素还是数组, 可以直接写成int [][] = {{},{},{}}
; 二维数组又被称为矩阵
; 其中如果矩阵的行数和列数如果相同
的话又称为方阵
。
4. 数组常见算法(冒泡排序等
)
-
冒泡排序(N个数字来排队,两两相比小的靠前;外层循环N-1,内层循环N-1-i)
-
选择排序
每一轮挨个比完了选出最小的排在第一, 第二轮开始拿第二个数首先当成最小数来比, 每一轮完成后第一位就是最小的数;
选择排序法的有点是,数据规模越小越好, 好处是不占用额外的内存空间
-
插入排序(从后向前找到合适位置后插入,即数组排序,每一轮都用一个元素来排序)
-
二分查找(折半查找,在一个顺序排列的数组里,查找一个数是否存在,存在的话获取该元素的下标)
拓展知识: >>> 1: 无符号右移1位, 相当于除2;
4. 数组常用方法
判断数组是否包含该元素,并返回对应下标(二分法查找):
Arrays.binarySearch(int[] , int value);
数组转字符串:
Arrays.toString(int[]);
数组排序:
Arrays.sort(int[] array);
复制指定的数组:
Arrays.copyOf(int[] array, int length);//copyOf底层原理是arraycopy length指要复制x个元素的意思
Arrays.copyOf(int[] array, int from, int to); // 复制: 从x位到y位 || 更多当截取
System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length); // 性能高
System.arraycopy(源对象, 源对象起始位置, 目标对象, 目标对象起始位置, 复制多长);
数组截取:
Arrays.copyOf(int[] array, int from, int to);
判断两个数组是否相等
Arrays.equels(int[] array1, int[] array2);
使用指定元素填充数组:
Arrays.fill(x);