java数组(1)

数组的概念

数组是存放同一种类型的数据的集合,它在内存里占一段连续的空间。

例如:int数组 ,就是数组里的数据都是int类型的; float数组,就是数组里都是float类型的 ;

                  (猪圈里只养猪,不养别的东西;羊圈里只养羊,不养别的东西)

数组的定义

数据类型[ ] 数组名 ;(数据类型后跟一个中括号+空格+数组名),就可以定义一个数组的引用;

 (这时候这三个数组的引用不指向任何数据,连null都不是)

怎么定义并初始化一个数组,可以用下面几个方式;

在定义的时候直接赋值

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

 (用大括号圈住数据,里面的各个数据用逗号隔开)

第一个数组 array1 里就有了三个元素  (1 和 2  还有 3);

这样的直接赋值只能在数组定义的时候使用,不然的话就不能这样赋值;

例如:

(这里在定义了数组arr后直接赋值,这里编译器会报错,所有直接赋值只能在数组定义时使用)

用关键字new创建数组 

格式:类型[ ] 数组名 = new 类型 [ 数组大小 ] ;

 (把一个大小10 的数组 赋给 array1,这里的10 就是这个数组最多可以存放10个int类型的数据)

 通过new 关键字创建的数组,数组里的元素都是各个数据类型的默认值

例如:

(输出这个数组里的第一个元素,输出结果是0 )

 各类数组元素的默认值

 用关键字new给数组赋值

 我们前面说了,给数组直接赋值只有在定义数组的时候可以用,但是如果我不想在定义数组的时候直接赋值,我想在定义完数组后赋值,那可以这样做 ;

(可以看到数组array2会报错,但是后面的array3没有报错)

可以这样的方法给数组赋值了;

同一个类型的数组之间可以互相赋值 

两个相同类型的数组之间,可以互相赋值  ;

数组array1和array2 都是int类型的数组 ,把array1的值赋给array2,就相当于令array2这个数组引用指向 array1 指向的数组 ;(array3和array4同理)

 (array1和array2指向 同一个 数组)

获取数组的元素

下标 : 

把数组看成是一个长方形 ,这个长方形分成多份,每一份就是一个元素 ,下标就是这些元素的对应的序号 。下标从0 开始

 (如图:array里 ,下标0对应的元素就是1)

通过下标获取数组的元素 ;

格式 : 数组名 [ n ]   ;   (数组名后跟一个中括号,中括号里是下标) 

 如图:

ret1 里拿到的就是数组里下标为0 的元素 ;  ret2 里拿到的就是数组里下标为1 的元素 ;             

ret3 里拿到的就是数组里下标为2 的元素 ;  ret4 里拿到的就是数组里下标为3 的元素 ;

int[] array = {1, 2, 3, 4 } ;
        int ret1 = array[0] ;
        int ret2 = array[1] ;
        int ret3 = array[2] ;
        int ret4 = array[3] ;
        System.out.println("ret1 = " + ret1 );
        System.out.println("ret2 = " + ret2 );
        System.out.println("ret3 = " + ret3 );
        System.out.println("ret4 = " + ret4 );

我们输出一下ret1,ret2 , ret3 , ret4 的值 ;

数组的越界访问

我们知道了 array 数组的下标范围 就是 0 ~ 3 , 如果我们使用的下标不在这个范围里面 就会出现数组下标越界异常;

(通过下标4访问数组,但是数组没有下标4,这就是下标越界了) 

因为我们超出了array数组下标的范围了,所以运行代码时编译器抛异常了 ;

 (访问数组时,要注意下标有没有超出范围)

 获取数组的长度

我们可以通过获取数组的长度来访问数组,从而减少数组越界的错误 ;

格式 : 数组名 . length  ;         (数组名后跟一个 点  length)

此时  len1 = 3  , len2 = 3 ; len1 拿到了array1 的长度 ,len2 拿到了array2 的长度 ;

有了数组的长度就可以借助数组长度输出数组的元素:

通过foreach循环获取数组元素

格式 : for( 类型 变量名 : 数组 ){ }   

用一个变量来获取数组里的元素(这个变量的类型和数组里元素的类型一致);

 int[] array = { 2, 3, 4, 5} ;
        for(int i : array){
            System.out.print(i + "  ");
        }

(代码输出 :  2   3   4   5) 

在foreach循环里 ,循环开始时 ,i 就得到了array数组的第一个元素,每次循环得到数组的下一个元素,循环直到把这个数组的元素都遍历了结束 ;

foreach循环没有拿到数组的下标,它只是获取了元素的值,不能像其他循环那样通过下标做出一些操作;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值