Day2 数组

1. 概念:1>同时存放多个数据值;

               2>特点:<1>数组本身是引用类型,而数组中的数据可以是基本类型,也可以是引用类型;

                              <2>数组中的类型必须一致;

                              <3>长度在程序运行时不能改变。

2. 动态初始化:指定长度,即在创建数组时,直接指定数组当中数据元素的个数。

                         1>格式:数据类型[] 数组名称 = new 数据类型[数组长度]; //数组长度是一个int类型

                         2> - int double float...string的数据类型是String;

                              - 可以拆分成两个步骤。

3.1>静态初始化:<1>指定内容,即创建数组时,不直接指定个数,而是直接指定数组内容。

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

                             <3> - 静态初始化根据{ }内的内容,可以推断出数组的长度;

                                    - 可以拆分成两个步骤:数据类型[] 数组名称;

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

   2>省略的静态初始化:<1>数据类型[] 数组名称 = {元素1,元素2,...};

                                       <2>不能拆分成两个步骤。

   3>使用:当不确定数组具体内容时,用动态初始化;否则,用静态。

4. 获取数组元素:(用静态初始化)1>数组名称[索引值];//索引值(元素编号)是一个int,scope:0 - (len(array[])-1)

                                                           2>可以直接打印出数组内的元素,也可以将元素赋值给变量,打印相应的变量。

5. 给数组元素赋值:(用动态初始化)1>默认值:int 0;float 0.0;string \u0000;boolean false;引用类型 null;

                                                              2>array[0] = 123 ; //可以对动态初始化的数组赋值。

6. 内存划分:1>栈(Stack):存放方法中的局部变量(方法的参数,即方法{ }内的变量),方法一定在栈里运行;

                      2>堆(Heap):new出来的东西;都有地址值(16进制);都有默认值;堆里存放数据;

                      3>方法区(Method Area):存放class的信息,包含方法‘s信息,但方法的真正运行都在栈里;

                      4>本地方法栈(Method Area):与操作系统有关;

                      5>寄存器(PC Register):与CPU相关。

7. 数组的内存图:1>一个数组的内存图:

                                2>两个数组的内存图:两个数组互相不影响(二者地址不相同)。

                                 3>两个引用指向同一个数组的内存图:运行完这段程序,再打印arrayA,array[1]和array[2]的值分别是100,200,因为int[] arrayB = arrayA;操作后,arrayA和arrayB相当于同一个数组(他们的地址相同)。

                                      

 8.常见的问题:1>索引越界异常:index> len.array[ ] 会出现 ArrayIndexOutOfBoundsException;

                          2>空指针异常:数组必须new进行初始化,否则不能调用数组内的元素,会出现NullPointerException;

9. 获取数组长度:1>数组名称.length  //int len = array[ ].length; 得到一个int数字,代表了array的长度;

                              2>数组长度不能在程序运行里面发生改变。

10.数组遍历输出:利用for loop通过对array的index进行处理,实现遍历。

11.求数组最值:利用for loop和if实现。

12.数组元素反转:1>对称位置的元素交换;2>用两个int min和max(大小是对索引的描述)做数组的索引;3>用第三个temp变量实现两个变量的交换;4>当min<max的时候可以进行交换;在min==max和min>max的时候停止交换。

13.传递地址:任何数据类型就可以作为方法的参数;调用方法的时候,向方法()进行传参,传递的是地址值。

14.返回地址:1>一个方法需要返回多个参数时,可以new一个数组;

                       2>数组作为方法的参数,传递进去的是数组的地址值;作为方法的返回值,返回的也是数组的地址值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值