文章目录

  • 1. 数组定义
  • 2 .数组(一维)
  • 静态数组
  • 动态数组
  • 数组存储原理
  • 数组应用
  • 3. 数组(二维)
  • 静态数组
  • 动态数组
  • 4.熟练运用
  • 数组习题1
  • 数组习题2


1. 数组定义

数组是存储同一种数据类型多个元素的集合。也可以看成一个容器。
数组既可以存储基本数据类型,也可以存储引用数据类型,数组本身就是一个引用数据类型。

2 .数组(一维)

静态数组

数组静态声明

数据类型[] 数组名称 = {元素,元素,元素......};

案例

public class 数组循环 {
    public static void main(String[] args) {
        /*
        * 需求:
        *   循环数组列表
        * */
        //定义数组
        int[] arr ={1,2,3,4,5};
 /*       for (int i =0;i<5;i++){
            System.out.println("int[]arr:"+arr[i]);
        }*/
        // 遍历数组
        for (int i =0;i<arr.length;i++){
            System.out.println(+arr[i]);
        }
    }
}
动态数组

数组动态声明

数据类型[] 数组名称 = new 数据类型 [长度] ;

动态声明去声明数组如果没有进行单独赋值操作,那么也会有值,值就是
int 类型是 0

例子:

public class Test1 {
    public static void main(String[] args) {
        /*
        * 定义一个5个元素组成的一维数组,对其赋值,再把该数组反向输出
        * */
        int [] arr =new int[5];
        Scanner s =new Scanner(System.in);

        System.out.println("请输入五个数:");
        for (int i=0;i<arr.length;i++){
            arr[i]= s.nextInt();

        }
        System.out.println("反向输出");
        for(int i=0;i<arr.length;i++){

            System.out.println(arr[4-i]);

        }

    }
}
数组存储原理
public class 数组存储原理 {
    public static void main(String[] args) {
        /*
        * 需求
        *   内存分析
        * java程序在运行时,JVM把内存分为5块,栈,堆,方法区,本地方法区,寄存器
 			栈:存储的是局部变量,在函数和语句中定义的变量,先进后出的 ,局部变量的作用域结束了就立刻释放内存
            堆:存储的是实体(对象,数组),实体都是可以存储多个数据
           堆的特点:堆中开辟的内存有默认值。没有引用指向的就成为垃圾了。
            会等待垃圾回收线程来回收。
        int [] num =new int[2];
        System.out.println(num);//输出[I@1b6d3586 堆地址
    }
}

java静态定义数组 java中静态数组的定义_System

数组应用

冒泡排序

public class 冒泡 {
    public static void main(String[] args) {
        /*
        * 需求:
        *   判断一个数组排序(分析过程)
        *   1   4(5-1)
        *   2   3(5-2)
        *   3   2(5-3)
        *   4   1 (5-4)
        * */
        //定义一个静态数组
        int [] arr={1,4,7,28,5};
        //比较 for 双层循环控制轮数
        for (int i =1 ;i<arr.length;i++){
            for (int j=0 ;j<arr.length-i;j++){
                /*
                * 判断从小到大排序
                * 大的往后移,小的往前移
                * */
                if(arr[j]>arr[j+1]){
                 int temp=arr[j+1];
                 arr[j+1]=arr[j];
                 arr[j]=temp;
                }
            }
            //输出每一轮比较的结果
            System.out.println("输出比较"+i+"次所得结果");
            //for循环遍历输出
            for (int k =0;k<arr.length;k++){
                System.out.print(arr[k]+" ");
            }
            System.out.println();
        }
        //遍历循环数组输出结果
        for (int i =0;i<arr.length;i++){
            System.out.print(arr[i]+"  ");
        }
        System.out.println();
		//输出最小值
        System.out.println(arr[0]);
        //输出最大值
        System.out.println(arr[arr.length-1]);
    }
}

3. 数组(二维)

二维数组其实是一位数组的嵌套(每一行看做一个内层的一维数组)

java静态定义数组 java中静态数组的定义_i++_02

静态数组

数组静态声明

数据类型[][]数组名称 = {{元素,元素,元素......},{元素,元素,元素......}};

例子:

public class 二维数组 {
    public static void main(String[] args) {
        /*
        * 需求
        *   遍历输出二维数组中的元素
        * 二维数组静态
        * */
        int[][]arr={{1,2},{3,4}};
        //输出二维数组中的元素
        /*
        * arr[行][列]
        * */
        //赋值
        int num =arr[0][0];
        int num1=arr[0][1];
        System.out.println(num);
        System.out.println(num1);
        /*
        * 当二维数组中元素较多时上面的方式显然不实用
        * 就需要运用for循环遍历
        * */
        for(int i =0;i<arr.length;i++){
            for(int j=0;j<arr[i].length;j++){
            //输出数组中的元素
                System.out.println(arr[i][j]);
            }
        }
    }
}
动态数组

数组动态声明

数据类型[][] 数组名称 = new 数据类型 [行] [列];

例子:

public class 动态二维数组 {
    public static void main(String[] args) {
    	//声明
        int[][]arr=new int [2][2];
        //赋值
        arr[0][0]=1;
        arr[0][1]=2;
        arr[1][0]=3;
        arr[1][1]=4;
        //遍历输出
        for(int i=0;i<arr.length;i++){
            for(int j=0;j<arr[i].length;j++){
                System.out.println(arr[i][j]);
            }
        }
    }
}

4.熟练运用

数组习题1
public class 数组习题1 {
    public static void main(String[] args) {
        /*
         * 需求:
         * 将
         *   oldarr={1,3,45,5,67,7,0,00,0,0}
         * 变成
         *   newarr={1,3,45,5,67,7,00}
         * 然后将newarr数组中元素从小到大排序
         * 利用冒泡排序
         * */
        int index = 0;
        int count = 0;//计时器
        //定义数组
        int[] oldarr = {1, 3, 45, 5, 67, 7, 0, 00, 0, 0};
        for (int i = 0; i < oldarr.length; i++) {
            if (oldarr[i] != 0) {
                count++;
            }
        }
        System.out.println(count);
        //定义新数组
        int[] newarr = new int[count];
        //循环旧数组
        for (int i = 0; i < oldarr.length; i++) {
            //newarr[i]=oldarr[i];//这样写会造成数组下标越界,所以需要重新定义一个
            if (oldarr[i] != 0) {
                newarr[index++] = oldarr[i];
            }
        }
        for (int i = 1; i < newarr.length; i++) {

            for (int j = 0; j < newarr.length - i; j++) {
                /*
                 * 判断从小到大排序
                 *
                 * 大的往后移,小的往前移
                 * */
                if (newarr[j] > newarr[j + 1]) {
                    int temp = newarr[j + 1];
                    newarr[j + 1] = newarr[j];
                    newarr[j] = temp;
                }
            }
            }
        for (int k = 0; k < newarr.length; k++) {
            System.out.print(newarr[k] + "   ");
        }
    }
}
数组习题2
public class 数组习题 {
    public static void main(String[] args) {
        /*
        * 需求
           解决:    该3数字不在数组中
                    该3数字不在数组中
                    该3数字在数组中
                    该3数字不在数组中
                    该3数字不在数组中
                    显然该程序输出结果不对
                    * 解决方案:
                    * 做标记
        * */
        * 做标记
        boolean nums=false;
        int num=3;
        int[] arr ={1,2,3,4,5};
        for(int i=0 ;i<arr.length;i++){
        如果是此种方式的话,输出结果如上
//            if(arr[i]==num){
//                System.out.println("该"+num+"数字在数组中");
//            }else{
//                System.out.println("该"+num+"数字不在数组中");
//            }
            if(arr[i]==num){
                nums=true;
            }else{
            }
        }
        if(nums){
                System.out.println("该"+num+"数字在数组中");
            }else{
                System.out.println("该"+num+"数字不在数组中");
            }
    }
}