JAVA基础笔记——数组

数组(容器)
    数组是一组数据类型相同的数据的组合,将这些数据统一的管理起来
    数组本身是一个引用数据类型,数组内存储的类型可以是基本类型 也可以是引用类型
    数组的特点
    1.数组本身是一个引用数据类型
    2.数组是在堆内存中的一串连续的地址存在
    3.数组在初始化时必须指定长度
    4.堆内存的数组空间长度一旦确定  不能再次发生改变
    5.栈内存的变量中存储的是数组的地址引用
    6.数组内部存储的类型可以是基本的 也可以是引用

    1.数组的定义(声明)
        数据类型[]  数组名字;
        int[] x;
        char[] y;
        boolean[] z;
        String[] m;
    2.数组的赋值(初始化)
        静态初始化     有长度  有元素
            int[] array = {10,20,30,40,50};
            int[] array = new int[]{10,20,30};
        动态初始化     有长度  没有元素(不是真的没有 默认值)
            int[] array = new int[5];
            整数默认值---0
            浮点数默认值---0.0
            字符型默认值---  0---char   97-a  65-A  48-'0'
            布尔型默认值---  false
            引用数据默认值--- null    String[]
    3.数组元素的访问
        通过元素在数组中的位置来访问
        存值/取值
        位置---->index索引
        索引是有取值范围    [从0开始-----数组长度-1]
        如果数组的索引超出了上述范围
        会出现一个运行时异常   ArrayIndexOutOfBoundsException
    4.数组元素的遍历(轮询)
        通过循环的方式访问数组的每一个元素
        for( ; ; ){
        }
        JDK1.5版本之后   新的特性   增强for循环  加强for   forEach
        for(自己定义的变量(接收数组内每一个元素) : 遍历的数组array){
        }
        正常的for循环以及加强的for循环都需要非常熟练
        1.正常的for   有三个必要条件  index索引  找到某一个元素的位置
                可以通过index直接访问数组的某一个位置   存值  取值都可以
                不好在于写法相对来说比较麻烦
        2.增强的for   有两个条件    用来取值的变量  用来遍历的数组  没有index索引
                好处写法相对比较容易
                不好只能取值  不能存值
                没有index索引  找不到元素到底是哪一个
    *5.基本数据类型和引用数据类型在内存结构上的区别
        所有的变量空间都存储在栈内存
        变量空间可以存储基本数据类型  也可以存储引用数据类型
        如果变量空间存储的是基本数据类型  存储的是值  一个变量的值改变  另一个不会跟着改变
        如果变量空间存储的是引用数据类型  存储的是引用(地址)  一个变量地址对应的值改变 另一个跟着改变

    需求    容器(变量 数组)
    1.创建一个数组   用来存储1-100之间的偶数
        设计程序的时候出现的小问题
        1.创建一个数组   动态初始化????
            元素个数比较少  静态   元素个数很多有规律  动态  元素很多没规律
        2.用了两个循环  一个只为了存值  另一个只为了输出看一看
            存放时直接看结果可能由于存放误操作---看时正确 之后就发生变化
            存放不一定必须要查看  存放是一件事情 查看是另一件

============================================================================================

二维数组
    0.数组的概念  特点
    1.数组的定义/声明
    2.数组的初始化
        静态初始化---有长度  有元素
        动态初始化---有长度  没有元素(默认值)
    3.数组元素的访问
        通过元素在数组中的位置----index索引
    4.数组元素的遍历/轮询


    0.数组特点
        数组本身是一个引用类型
        声明时必须指定长度   长度一旦确定不能再次发生改变
    1.定义/声明
        里面存储的类型[]  数组名字;
        int[][]  array;
    2.初始化
        静态---有长度 有元素
            int[][]  array = {{1,2},{3,4,5,6},{7,8,9}};
        动态---只有长度 没有元素(默认)
            int[][]  array =new int[3][2];
            array--->{{x,x},{x,x},{x,x}}--->  x默认值0
            可能会产生一个运行时异常
            NullPointerException
    3.元素访问
        通过元素在数组中的位置---index
        array[i][j]
        i控制大数组中 小数组的位置
        j控制小数组中 元素的位置
    4.遍历轮询
        正常 增强for循环  嵌套完成
    5.引用类型在内存中的存储结构
        二维数组在内存中的存储
        int[][] array = new int[3][];
        //3表示有3个小数组 int[] 
        //2表示每一个小数组内有2个元素---->表示小数组的长度
        //array[0][0] = 10;  
        //array[0][1] = 20;
        //NullPointerException   空指针异常

三维数组
    创建一个数组  数组内存储好多个 int[][]
    int[][][] array = {{{1,2},{3,4}},{{},{}},{{},{}}};
    int[][][] array = new int[3][][];
        三个二维数组  每一个里面有两个一维数组  再里面有两个int元素

常见的运行时异常
    1.InputMisMatchException    输入类型不匹配
        input.nextInt();  输入一个整数   a
    2.ArrayIndexOutOfBoundsException   数组索引越界
        静态初始化  int[] array = {10,20};
        array[2]  索引超出边界
    3.NegativeArraySizeException   数组长度不合法(长度出现负数)
        动态初始化  int[] array = new int[-2];
    4.NullPointerException    空指针异常
        引用为null   还拿来使用就不行啦
        int[] array = null;
        array[0] = 10;//空元素再拿来用
        最容易找到异常  同时也是最难找的


    1.模拟班级同学每周换位置
        {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}}
    留给大家2. 利用二维数组 实现用户登录认证
        String[] 账号  索引对应  int[]  密码
        String[][] {{"郑中拓","123"},{"渡一教育","666"},{"Java","888"}}

    main方法
    public static void main(String[] args){

    }
    public 访问权限修饰符 公有的
    static  特征修饰符  静态的 有且只有一份
    void   方法执行完没有返回值  关键字
    main  方法名字  主要的
    主方法中的args参数 可否传递?
    1.主方法不是我们调用的   JVM虚拟机启动的时候   虚拟机调用的
    2.主方法里面有args参数  是一个String[]类型  我们是可以传递参数进去  给JVM
================================================================
 

你可能感兴趣的:(JAVA)