一、数组的概述

  1、数组的定义

    数组(Array)是多个相同数据类型数据按照一定的顺序排列的集合,并使用一个名字来命名,通过编号的方式对这些数据进行统一管理。

  2、数组相关的概念

    数组名

    元素

    角标,也叫做下标或者索引

    数组的长度,也就是元素的个数

  3、数组的特点

    数组是有序排列的

    数组属于引用数据类型变量。数组的元素,既可以是基本数据类型,也可以是引用数据类型变量

    创建数组对象会在内存中开辟一段连续的存储空间‘

    数组的长度一旦确定,就不能修改

  4、数组的分类

    按照维数:一维数组,二维数组,·····

    按照数组元素类型:基本数据类型元素数组,引用数据类型元素的数组

  5、一维数组的使用

    数组的声明和初始化

    调用数组指定位置的元素

    获取数组的长度

    遍历数组

    数组元素的默认初始值

    数组的内存解析

package com.xunaxiao.array;

public class ArrayTest {
    public static void main(String[] args) {
        
        
//        静态初始化:数组的初始化和数组元素的赋值操作同时进行
        int[] ids;
        ids = new int[]{1001,1002,1003,1004,1005};
//        动态初始化:数组的初始化和数组元素的赋值分开进行
        String[] names = new String[5];
//        数组一旦初始化完成,其就确定了长度
        
        for(int i = 0; i<ids.length;i++) {
            System.out.println("学生" + i + "的学号是:" + ids[i]);
        }
        
        /*数组元素的默认初始值
         * 数组元素是整型:0
         * 数组元素是浮点型:0.0
         * 数组元素的char类型:0 或者 "u0000"
         * 数组元素是boolean型:false
         */
        int[] array1 = new int[5];
        for(int i= 0;i<array1.length;i++) {
            System.out.println(array1[i]);
        }
        System.out.println("*********");
        
        double[] array2 = new double[5];
        for(int i= 0;i<array2.length;i++) {
            System.out.println(array2[i]);
        }
        System.out.println("*********");
        
        char[] array3 = new char[5];
        for(int i= 0;i<array3.length;i++) {
            System.out.println("$$$$" + array3[i] + "$$$$");
        }
        System.out.println("*********");
    }
}

    ***一维数组的内存解析***

   6、一维数组练习题

package com.xunaxiao.array;

import java.util.Scanner;

public class ArrayTest1 {
    public static void main(String[] args) {
        
        /*
         * 从键盘读入学生成绩,找出最高分,并输出学生成绩等级;
         *         成绩 >= 最高分-10  等级是'A'
         *         成绩 >= 最高分-20  等级是'B'
         *         成绩 >= 最高分-30  等级是'C'
         *         其余                        等级是'D'
         * 最后输出一句:学生***的成绩是:***等级是:***
         */
        
        
        Scanner input = new Scanner(System.in);
        System.out.print("请输入学生的个数:");
        int n = input.nextInt();
        
//        创建数组
        double[] students = new double[n];
        System.out.println("请输入学生的成绩···");
        for(int i = 0;i<students.length;i++) {
            System.out.print("学生" + i + "的成绩:");
            students[i] = input.nextDouble();
            System.out.println();
        }
        double max = students[0];
        for(int j = 1;j<students.length;j++) {
            if (max < students[j]) {
                max = students[j];        
            }
        }
        System.out.println("学生最高分为" + max);
        char grade;
        for(int k = 0;k<students.length;k++) {
            if(students[k] >= (max-10)) {
                grade = 'A';
                System.out.println("学生" + k + "的成绩是:"+ students[k] + "等级是:" + grade);
            }else if(students[k] >= (max-20)) {
                grade = 'B';
                System.out.println("学生" + k + "的成绩是:"+ students[k] + "等级是:" + grade);
            }else if(students[k] >= (max-30)) {
                grade = 'C';
                System.out.println("学生" + k + "的成绩是:"+ students[k] + "等级是:" + grade);
            }else {
                grade = 'D';
                System.out.println("学生" + k + "的是:"+ students[k] + "等级是:" + grade);
            }
        }
    }
}

  7、二维数组

    二维数组的理解:

      可以看作是一维数组Array1作为另一个一维数组Array2 的元素而存在。

      (从数组的底层的运行机制来看,并没有多维数组。)

    二维数组的使用:

      数组的声明和初始化

      调用数组指定位置的元素

      获取数组的长度

      遍历数组

      数组元素的默认初始值

      数组的内存解析

    

package com.xunaxiao.array;

public class ArrayTest2 {
    public static void main(String[] args) {
        //1.二维数组的声明初始化
        //静态初始化
        int[][] array = new int[][]{{1,2,3,},{4,5},{6,7,8}};
        //动态初始化1
        String[][] array1 = new String[3][2];
        //动态初始化2
        String[][] array2 = new String[3][];
        
        //2.调用数组的指定位置的元素
        System.out.println(array[0][1]);
        System.out.println(array[1][1]);
        
        //3.获取数组的长度
        System.out.println(array.length);//3
        System.out.println(array[0].length);//3
        
        
        //4.如何便利二维数组
        for(int i=0;i<array.length;i++) {
            for(int j = 0;j<array[i].length;j++) {
                System.out.print(array[i][j] + "   ");
            }
            System.out.println();
        }
            
        /*
         * 5.二维数组的使用
         *         规定:二维数组分为外层数组元素,内层数组元素
         *             int[][] array = new int[4][3];
         *             外层元素:array[1],array[0]等
         *             内层元素:array[0][0],array[1][2]等
         *         数组元素的默认初始值
         *             初始化方式一:int[][] array = new int[4][3];
         *                 外层元素的初始化值:地址值
         *                 内层元素的初始化值:0(因为是int类型的元素,随着数据类型而改变)
         *             初始化方式二:int[][] array = new int[4][];
         *                 外层元素的初始化值:null
         *                 内层元素的初始化值:不能调用,否则报错
         */
        int[][] array3 = new int[4][3];
        System.out.println(array3[0]);
        System.out.println(array3[0][0]);
        
        double[][] array4 = new double[4][];
        System.out.println(array4[0]);
        System.out.println(array4[0][0]);
    }
}

      ***二维数组的内存解析***

  8、二维数组练习题

package com.xunaxiao.array;

import javax.swing.plaf.synth.SynthOptionPaneUI;

public class ArrayTest3 {
    public static void main(String[] args) {
        /*
         * 获取数组array中多有元素的值。
         * 3  5  8
         * 12 9
         * 7  0  6  4
         */
        int[][] array = new int[][]{{3,5,8},{12,9},{7,0,6,4}};
        int sum = 0;
        for(int i = 0;i<array.length;i++) {
            for(int j = 0;j<array[i].length;j++) {
                sum += array[i][j];
            }
        }
        System.out.println("元素的和为:" + sum);
        
    }

}
package com.xunaxiao.array;


public class ArrayTest4 {
    public static void main(String[] args) {
        /*
         * 使用二维数组打印一个10行杨辉三角;
         * 第一行有1个元素,第n行有n个元素;
         * 每一行的第一个元素和最后一个元素都为1;
         * 从第三行开始,对于非第一个元素和最后一个元素,其值为上面一个元素和上面的前面一个元素的和;
         */
        int[][] hanghui = new int[10][];
        
        for(int i=0;i<hanghui.length;i++) {
            hanghui[i] = new int[i+1];
            hanghui[i][0] = hanghui[i][i] = 1;
            for(int j = 1;j < hanghui[i].length-1;j++) {
                hanghui[i][j] = hanghui[i-1][j] + hanghui[i-1][j-1];
            }
        }
        
        for(int i= 0;i<hanghui.length;i++) {
            for(int j =0;j<hanghui[i].length;j++) {
                System.out.print(hanghui[i][j] + " ");
            }
            System.out.println();
        }
    }

}

 

内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/xuanxiaokeji/p/13890867.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!

相关课程

3799 178.2元 198元 9折