Java数组

一:Random随机数

作用:用于产生一个随机数

 流程:

        A:导包   java.util.Random

        B:   创建对象   Random  r  = new  Random();

        C:   产生随机数   int   number = r.Random(10); 这里表示[0,10)之间的整数

二:java一维数组

数组是存储多个变量(元素)的容器    注意:数组中的元素的数据类型要保持一致

定义格式:

1:数据类型[ ]   数组名  (推荐使用)

2:数据类型    数组名[  ]

数组初始化

A:所谓初始化,就是为数组开辟内存空间,并为数组中的每一个元素赋予初始值

B:两种方式可以实现数组初始化

       (1)动态初始化    只给出长度,有系统给出初始化值

       (2)静态初始化    只给出初始化值,长度有系统决定

<1>动态初始化

      格式:数据类型   [  ]    数组名  =   new   数据类型[  数组长度 ]

                 格式解释:

                                 int[  ]    arr  =   new   int [  3 ]

                                 左边:int  表示数组中的元素的数据类型为int

                                            [  ]  表示一个数组

                                             arr 表示数组名称

                                  右边:new   表示为数组申请内存分配开辟空间

                                             int       表示数组中的元素的数据类型

                                             [  ]     表示一个数组

                                             3       表示数组中元素个数(数组长度)

<2>数组中的元素访问

     注意:我们输出数组名称时,输出的是数组的地址

     java数组中每一个元素都有自己的编号(下标),从0开始到(数组长度-1),通过数组名和编号一起使用可以获取指定编号的元素值

     编号专业名称叫“索引”

    访问格式:       数组名[索引];

<3>java中内存分配

    栈     存储局部变量

    堆      存储new出来的东西

    方法区       面向对象讲 ,这里暂时不讲

   本地方法区    和系统有关   这里暂时不讲

   寄存器      和cpu有关    这里暂时不讲

                A:栈:存储局部变量   使用完毕垃圾回收器立即回收                                B:堆:存储的是new出来的东西,实体,对象

                              局部变量是定义在方法中的变量                                                                1:每一个对象都有地址值

                        int [  ]   arr   =  new  int[3];                                                                                 2:每一个对象的数据都有默认值

                         System.out.println(arr);                                                                                    byte,int,short,long默认0;float,double默认0.0

                         System.out.println(arr[0]);                                                                                char默认‘\u0000';boolean默认false

                         System.out.println(arr[1]);                                                                                 引用类型(类,接口,数组)默认null;

                         System.out.println(arr[2]);                                                                                   3:使用完毕后,会在垃圾回收器空闲的时

                                                                                                                                                           侯回收;

              Java数组

                            (1)一个数组的内存分配

                                    Java数组

                          (2)两个数组的内存分布

                                Java数组

                          (3)两个数组指向同一个地址

                             Java数组

<4>静态初始化

    格式:数据类型[  ]    数组名   =    new     数据类型[  ] {元素1,元素2..........};

    简化格式:   数据类型[  ]   数组名   =  {元素1,元素2..........};

Java数组

<5>数组操作两个小问题

     A:ArrayIndexOutOfBoundsException;  索引数组越界问题

             原因:访问了不存在的索引

   B:NullPointerException;空指针异常

       产生的原因:数组已经不指向堆内存的数据了,你还使用数组名去访问元素。

Java数组

<6>数组遍历

     数组元素个数:使用元素length

    格式:数组名.length

三:二维数组

定义格式

数据类型[ ][ ] 数组名;

数据类型 数组名[ ][ ]; 不推荐

数据类型[ ] 数组名[ ]; 不推荐

初始化方式

数据类型[ ][ ] 变量名 = new 数据类型[m][n];

数据类型[ ][ ] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}};

简化版格式:数据类型[ ][ ] 变量名 = {{元素…},{元素…},{元素…}};

二维数组名配合索引可以获取每一个一维数组,每一个一维数组配合索引可获取数组中的元素