数组的定义:
- package The_First_Stage.The_beginner_level_Java_SE.Arrawy;
-
- /**
- * 数组的作用:用来存储相同类型的数据
- * 以int类型数据为案例:数组用来存储int类型数据
- * 1》声明定义数组
- * int【】 arr 定义一个int类型的数组,名字为arr
- * int arr2【】
- * 如果数组只声明,没有后续操作,那么这个数组相当于没有定义
- * int 【】 arr3=null; 空 数组赋值为null和和什么都没有赋值 不一样的效果
- *
- * 2》创建
- * arr=new int【4】; 给数组开辟了一个长度为4的空间
- * int 【】arr=new int【4】;声明和创建和为一句话
- * 3》赋值
- * arr[0]=12;
- * arr[1]=1255;
- * arr[2]=1;
- * arr[3]=232;
- * ====================arr[4]=16452;-------------数组索引越界
- *
- * 4》使用
- *System.out.println(arr[1]);
- *数组的长度
- * System.out.println(arr.length);
- *
- *
- */
- public class TestArray02 {
- public static void main(String[] args) {
-
-
- }
- }
数组的使用:
- package The_First_Stage.The_beginner_level_Java_SE.Arrawy;
-
- import java.util.Scanner;
-
- /**
- * 功能:键盘录入十个学生的成绩,求和,求平均数
- *
- */
- public class TestArray03 {
- public static void main(String[] args) {
- int[] scores=new int[10];
- int sum=0;
- Scanner sc=new Scanner(System.in);
- for (int i = 0; i < 10; i++) {
- System.out.println("请录入第"+(i+1)+"个学生的成绩");
- int score=sc.nextInt();
- scores[i]=score;
- sum+=score;
- }
- System.out.println("十个学生的成句之和为"+sum);
- System.out.println("十个学生成绩平均数为:"+sum/10);
-
- //求取第6个学生的成绩
- // System.out.println(scores[5]);
-
- //数组的遍历----》方式一
- // for (int i = 0; i <= 9; i++) {
- // System.out.println(scores[i]);
- // }
- //增强for循环 ----------》方式二
- //对scores数组进行遍历,遍历出来每个元素都用int类型的num接收:
- // int count=0;
- // for(int num:scores){
- // //每次豆浆num在控制台输出
- // System.out.println("第"+count+"个学生的成绩为:"+num);
- // }
- /**
- * 增强for循环
- * 优点:代码简单
- * 缺点:单纯的增强for循环不能涉及跟索引相关的操作
- */
- //方式三:利用普通的for循环:逆向遍历:
- for (int i=9;i>=0;i++){
- System.out.println(scores[i]);
- }
- }
- }
求取数组中的最大值
- package The_First_Stage.The_beginner_level_Java_SE.Arrawy;
-
- /**
- * 求最大值
- */
- public class TestArray04 {
- public static void main(String[] args) {
- //1.定义一个数组
- int[] arr = {12, 3, 7, 4, 8, 125, 9, 45, 666, 36};
- //2.求出数组中的最大值:
- int num = getMaxNum(arr);
- System.out.println("当前数组中最大的数为:" + num);
-
- }
- public static int getMaxNum(int[] arr) {
- int maxNum = arr[0];
- for (int i = 0; i < arr.length; i++) {
- if (arr[i] > maxNum) {
- maxNum = arr[i];
- }
- }
- return maxNum;
- }
- }
查询元素对应的索引
- package The_First_Stage.The_beginner_level_Java_SE.Arrawy;
-
- public class TestArray05 {
- public static void main(String[] args) {
- int[] arr={12,34,56,7,3,10};
-
- System.out.println(arr[2]);
-
- //查询56对应的索引
- int index=getindex(arr,56);
- if (index!=-1){
- System.out.println("元素对应的索引:"+index);
- }else {
- System.out.println("查无此书!");
- }
- }
- public static int getindex(int []arr,int ele){
- int index=-1;//初始值只要不是数组的索引就行
- for (int i=0;i<arr.length;i++){
- if(arr[i]==ele){
- index=i;//只要找到了元素,那么index就变成i
- break;
- }
- }
- return index;
- }
- }
- package The_First_Stage.The_beginner_level_Java_SE.Arrawy;
-
- import java.util.Scanner;
-
- public class TestArray07 {
- public static void main(String[] args) {
- //给定一个数组,在数组下标为2的位置上添加一个元素91
-
- int[] arr = {12, 34, 56, 7, 3, 10};
- //输出增加元素前的数组
- System.out.print("增加元素前的数组:");
- for (int i = 0; i < arr.length; i++) {
- if (i != arr.length - 1) {
- System.out.print(arr[i] + ",");
- } else {
- System.out.print(arr[i]);
- }
- }
- //从键盘接受数据
- Scanner sc=new Scanner(System.in);
- System.out.print("\n请录入你要添加元素的指定下标:");
- int index=sc.nextInt();
- System.out.print("请录入你要添加的元素:");
- int ele=sc.nextInt();
-
- //增加元素
- insertEle(arr,index,ele);
- /**
- * arr[5]=arr[4];
- * arr[4]=arr[3];
- * arr[3]=arr[2];
- */
- //输出后增加元素后的数组
- System.out.print("\n增加元素后的数组:");
- for (int i = 0; i < arr.length; i++) {
- if (i != arr.length - 1) {
- System.out.print(arr[i] + ",");
- } else {
- System.out.print(arr[i]);
- }
- }
- }
-
- /**
- * 提起一个添加元素的方法:
- * 在数组的指定位置上添加一个指定的元素
- * 在哪个数组的哪个位置添加哪个元素
- * 不确定因素:形参:哪个数组,哪个位置,哪个元素
- * 返回值:无
- */
- public static void insertEle(int []arr,int index ,int ele){
-
- for (int i = arr.length - 1; i >= (index+1); i--) {
- arr[i] = arr[i - 1];
- }
- arr[index] = ele;
-
-
- }
-
-
-
- }
- /**
- * @Author zhengwang
- * @Date 2023/11/7 10:45
- * @PackageName:The_First_Stage.The_beginner_level_Java_SE.Arrawy
- * @ClassName: TestArray08
- * @Description: TODO 给定一个数组,删除下标为2元素
- * @Version 1.0
- */
- package The_First_Stage.The_beginner_level_Java_SE.Arrawy;
-
-
- import java.util.Arrays;
-
- public class TestArray08 {
- public static void main(String[] args) {
- int[] arr = {12, 34, 56, 7, 3, 10};
- //输出删除前的数组:
- System.out.println("删除前的数组" + Arrays.toString(arr));
- //删除
- // arr[2]=arr[3];
- // arr[3]=arr[4];
- // arr[4]=arr[5];
- int index = 2;
- for (int i = index; i <= arr.length - 2; i++) {
- arr[i] = arr[i + 1];
- }
- arr[arr.length - 1] = 0;
-
- //输出删除后的数组
- System.out.println("删除后的数组" + Arrays.toString(arr));
-
-
- }
- }
-
- /**
- * @Author zhengwang
- * @Date 2023/11/7 11:02
- * @PackageName:The_First_Stage.The_beginner_level_Java_SE.Arrawy
- * @ClassName: TestArray09
- * @Description: TODO
- * @Version 1.0
- */
- package The_First_Stage.The_beginner_level_Java_SE.Arrawy;
-
- import java.util.Arrays;
-
- public class TestArray09 {
- public static void main(String[] args) {
- int[] arr = {12, 34, 56, 7, 3, 10,34,45,56,7,666};
- //输出删除前的数组:
- System.out.println("删除前的数组" + Arrays.toString(arr));
-
- //找到要删除的元素对应的索引即可
- int index = -1;
- for (int i=0;i<arr.length;i++){
- if (arr[i]==333){
- index=i;
- break;
- }
- }
-
- //删除
- // arr[2]=arr[3];
- // arr[3]=arr[4];
- // arr[4]=arr[5];
- // int index = 2;
- if (index!=-1){
- for (int i = index; i <= arr.length - 2; i++) {
- arr[i] = arr[i + 1];
- }
- arr[arr.length - 1] = 0;
- }else {
- System.out.println("根本没有你要删除的元素!");
- }
-
- //输出删除后的数组
- System.out.println("删除后的数组" + Arrays.toString(arr));
-
-
- }
- }
-
可变参数
- /**
- * @Author zhengwang
- * @Date 2023/11/7 14:09
- * @PackageName:The_First_Stage.The_beginner_level_Java_SE.Arrawy
- * @ClassName: TestArray12
- * @Description: TODO1)可变参数:作用提供了一个方法,参数的个数是可变的,解决了部分方法重载问题
- * int...num
- * double...num
- * boolean...num
- *
- * 2)可变参数在JDK1.5之后加入的新特性
- *3)方法的内部对可变参数的处理跟数组是一样的
- *4)可变参数和其它数据一起作为形参的时候,可变参数一定要放到最后
- * 5)我们自己在写代码的时候,建议不要使用可变参数
- * @Version 1.0
- */
- package The_First_Stage.The_beginner_level_Java_SE.Arrawy;
-
- public class TestArray12 {
- public static void main(String[] args) {
- // method01(10);
- // method01();
- // method01(20,30,40);
- method01(30,40,50,60,70);
- // method01(new int[]{11,22,33,44});
- }
- public static void method01(int num2,int...num){
- System.out.println("--------------1");
- for (int i:num){
- System.out.println(i+"\t");
- }
- System.out.println();
- System.out.println(num2);
- }
-
- }
-
数组的复制
- /**
- * @Author zhengwang
- * @Date 2023/11/7 14:53
- * @PackageName:The_First_Stage.The_beginner_level_Java_SE.Arrawy
- * @ClassName: TestArray13
- * @Description: TODO
- * @Version 1.0
- */
- package The_First_Stage.The_beginner_level_Java_SE.Arrawy;
-
- import java.util.Arrays;
-
- public class TestArray13 {
- public static void main(String[] args) {
-
- //给定一个数组:
- int[] arr={1,3,7,2,4,8};
- //toString:对数组进行遍历查看,返回的是一个字符串,这个字符串比较好看
- System.out.println(Arrays.toString(arr));
-
- //binarySearch:二分法查找,找出指定数组中的指定元素对应的索引
- //这个方法的使用的前提:一定要查看的是一个有序的数组:
- //sort:排序----》升序
- Arrays.sort(arr);
- System.out.println(Arrays.toString(arr));
- System.out.println(Arrays.binarySearch(arr,4));
-
-
- int[] arr2={1,3,7,2,4,8};
- //copyOf:完成数组的复制
- int [] newArr=Arrays.copyOf(arr2,4);
- System.out.println(Arrays.toString(newArr));
-
- //copyOfRange:区间复制:
- int [] newArr2=Arrays.copyOfRange(arr2,1,4);//[1,4)---->1,2,3位置
- System.out.println(Arrays.toString(newArr2));
-
- //equals:比较两个数组的值是否一样:
- int[] arr3={1,3,7,2,4,8};
- int[] arr4={1,3,7,2,4,8};
- System.out.println(Arrays.equals(arr3,arr4));//true
- System.out.println(arr3==arr4);// false ==比较左右两侧的值是否相等 比较的是左右的地址值,返回结果一定是false
-
- //fill:数组的填充
- int[] arr5={1,3,7,2,4,8};
- Arrays.fill(arr5,11);
- System.out.println(Arrays.toString(arr5));
-
-
-
-
- }
- }
-
- /**
- * @Author zhengwang
- * @Date 2023/11/7 16:19
- * @PackageName:The_First_Stage.The_beginner_level_Java_SE.Arrawy
- * @ClassName: TestArray14
- * @Description: TODO
- * @Version 1.0
- */
- package The_First_Stage.The_beginner_level_Java_SE.Arrawy;
-
- import java.lang.reflect.Array;
- import java.util.Arrays;
-
- public class TestArray14 {
- public static void main(String[] args) {
- //给一个源数组
- int [] srcArr={11,22,33,44,55,66,77,88};
- //给一个目标数组:
- int [] destArr=new int[10];
-
- //复制
- System.arraycopy(srcArr,1,destArr,3,3);
- //遍历查看目标数组:
- System.out.println(Arrays.toString(destArr));
- }
- }
-
二维数组的遍历
- /**
- * @Author zhengwang
- * @Date 2023/11/7 16:36
- * @PackageName:The_First_Stage.The_beginner_level_Java_SE.Arrawy
- * @ClassName: TestArray15
- * @Description: TODO--二维数组的定义与遍历
- * @Version 1.0
- */
- package The_First_Stage.The_beginner_level_Java_SE.Arrawy;
-
- public class TestArray15 {
- public static void main(String[] args) {
- //定义一个二维数组
- int[][] arr=new int[3][];//本质上定义了一个一维数组,长度为3
- int[] a1={1,2,3};
- arr[0]=a1;
- arr[1]=new int[]{4,5,6,7};
- arr[2]=new int[]{9,10};
-
- //读取6这个元素
- // System.out.println(arr[1][2]);
- //遍历二维数组
- //方式1:外层普通for循环+内层普通for循环:
- // for (int i = 0; i <= 2; i++) {
- // for (int j=0;j<arr[i].length;j++){
- // System.out.print(arr[i][j]+"\t");
- // }
- // System.out.println();
- // }
- //方式2:外层普通for循环+内层增强for循环
- // for (int i=0;i<arr.length;i++){
- // for (int num:arr[i]){
- // System.out.print(num+"\t");
- // }
- // System.out.println();
- // }
-
- //方式3:外层增强for循环+内层增强for循环
- // for (int[]a:arr){
- // for (int num:a){
- // System.out.print(num+"\t");
- // }
- // System.out.println();
- // }
- //方式5:外层增强for循环+内层普通for循环
- for (int[]a:arr){
- for (int i=0;i<a.length;i++){
- System.out.print(a[i]+"\t");
- }
- System.out.println();
- }
- }
- }
-
- /**
- * @Author zhengwang
- * @Date 2023/11/7 16:57
- * @PackageName:The_First_Stage.The_beginner_level_Java_SE.Arrawy
- * @ClassName: TestArray16
- * @Description: TODO
- * @Version 1.0
- */
- package The_First_Stage.The_beginner_level_Java_SE.Arrawy;
-
- public class TestArray16 {
- public static void main(String[] args) {
- int[][] arr=new int[3][2];
- //本质上:定义一维数组,长度为3,每个数组“格子”中,有一个默认的长度为2的数组
-
- arr[1]=new int[]{1,2,3,4};
- //数组遍历
- for (int[] a:arr){
- for (int num:a){
- System.out.print(num+"\t");
- }
- System.out.println();
- }
- }
- }
-