1.二维数组知识点
package com.bdqn.demo04;
public class Demo01 {
public static void main(String[] args) {
//二维数组:一个元素还是一维数组的一维数组
//二维数组的声明
int[][] arr1;
//分配空间
arr1 = new int[4][4];
//还有一种就是在声明时初始化
int arr2[][] = {{1, 2, 3}, {5, 6, 7}};
int[][] arr3 = new int[][]{{1, 2, 3}, {5, 6, 7}};
//赋值
arr1[0][0] = 1;
arr1[1][1] = 2;
//二维数组的使用
System.out.println(arr1[1][1]);
//二维数组的遍历
//arr3.length返回的行数
for (int i = 0; i < arr3.length; i++) {
//内层循环控制列数
for (int j = 0; j < arr3[i].length; j++) {
System.out.print(arr3[i][j]+" ");
}
//一行输出后换行
System.out.println();
}
}
}
2.Arrays工具类的使用
常见的方法如下,另外还有String类中的charAt方法;
package com.bdqn.demo02;
import java.util.Arrays;
public class Demo03 {
public static void main(String[] args) {
// Arrays工具类的使用
//定义两个数组
int arr1[] = {1, 2, 3, 4, 5};
int arr2[] = {1, 9, 3, 4, 5};
//equals方法
boolean result1 = Arrays.equals(arr1, arr2);
System.out.println("数组是否相同:"+result1);
//toString方法
System.out.println(Arrays.toString(arr1));
//fill方法无返回值
Arrays.fill(arr1, 10);
//sort方法
Arrays.sort(arr2);
System.out.println(Arrays.toString(arr2));
//二分查找返回查找数值的下标索引值,注意这个方法只适合排序好(升序)的数组
Arrays.sort(arr2);
int address = Arrays.binarySearch(arr2, 4);
//复制数组指定长度的一组数据从0位置开始复制//3就是长度,如果长度arr1数组的长度,多出来的值用arr1默认值代替
int[] arr3 = Arrays.copyOf(arr1, 3);
System.out.println(Arrays.toString(arr3));
//输出数组指定位置到另一个指定位置之间的所有值
int[] arr4 = Arrays.copyOfRange(arr1, 2, 4);
//String类中的charAt(下标值)返回指定下标的值,返回值类型为char型
String str = "abc";
char chr = str.charAt(1);
}
}
3.降序数组插入元素依然降序排列
package com.bdqn.demo02;
import java.util.Scanner;
public class Demo01 {
public static void main(String[] args) {
// 降序数组插入元素依然降序排列
//声明一个降序数组
int score[] = {90, 78, 65, 54, 32};
//创建Scanner类
Scanner sc = new Scanner(System.in);
System.out.println("请输入要插入的数字");
int num1 = sc.nextInt();
//创建一个score.length+1长度的数组
int newScore[] = new int[score.length+1];
//for循环将score复制到newScore中去
for (int i=0; i<score.length; i++) {
newScore[i] = score[i];
}
//找到插入位置
//先给默认的索引添加值,因为如果找不到比输入元素小的元素,我们就要插入到最后去
int index = newScore.length-1;
for (int j=0; j<score.length; j++) {
if (newScore[j] < num1) {
index = j;
break;//break很重要找到后就退出循环
}
}
//元素从最后依次往后移一位,直到插入位置前
for (int k=newScore.length-1; k>index; k--) {
newScore[k] = newScore[k-1];
}
//将插入值复制到指定位置去
newScore[index] = num1;
//输出数组
for (int z=0; z<newScore.length; z++) {
System.out.print(newScore[z]+" ");
}
}
}
4.冒泡排序(升序为例)
package com.bdqn.demo02;
public class Demo02 {
public static void main(String[] args) {
// 冒泡排序
//声明一个数组
int arr1[] = {12, 32, 23, 15, 67, 56};
int temp = 0;
//定义一个变量flag记录一轮的交换次数,如果一轮没有发生交换说明排序结束,默认是没有交换值为0
int flag = 0;
//输出排序前的数组
System.out.println("输出排序前的数组");
for (int i : arr1) {
System.out.print(i+" ");
}
//换行
System.out.println();
//外层循环控制轮数
for (int i=0; i<arr1.length-1; i++) {
//内层循环控制一轮的次数
for (int j=0; j<arr1.length-1-i; j++) {
if (arr1[j] > arr1[j+1]) {
//交换两个数据的值
temp = arr1[j];
arr1[j] = arr1[j+1];
arr1[j+1] = temp;
flag++;
}
}
//如果一轮没有发生交换,说明数组已经有序了,退出循环
if (flag == 0) {
break;
}
}
//输出冒泡排序后的数组
System.out.println("输出冒泡排序后的数组");
for (int i : arr1) {
System.out.print(i+" ");
}
}
}