java关于数组Array

数组的定义格式有两种:

数据类型[] 数组名;//数据类型,根据数组里的数进行调整
数据类型 数组名[];//数组的第二种格式
//举例:
int[] arr;
//定义了一个int类型的数组,数组名是arr;
int arr[];
//定义了一个int类型的变量,变量名是arr数组

数组的初始化:

a.所谓初始化就是为数组中的数据元素分配存储空间,为数组中的数据元素赋值

b.数组的初始化分为动态初始化和静态初始化两种;

动态初始化

初始化时只制定数组的长度,由系统为数组分配初始值;

数据类型[] 数组名 = new 数组名[数组长度];
//举例;
int[] arr = new arr[4];
//数组名是arr,数组里的元素是int型,数组长度是4;

静态初始化

数据类型[] 数组名 = new 数组名[]{元素1,元素2……};
//举例;
int[] arr = new arr[]{1,2,3,4,5};
//也可以简化写法
数据类型[] 数组名 = {元素1,元素2……};
int[] arr ={1,2,3,45};

数组的两个小问题:

a.数组索引越界

当我们查找数组元素的长度超过了数组的长度时,就会发生数组索引越界问题;

int[] arr={1,2,3,4};//定义一个长度为4的一维数组;
System.out.println(arr[4]);
//因为数组的长度是4,数组元素从0存到3,当我们输出arr[4]时,就会发生数组索引越界

b.空指针异常

当我们把数组赋值一个空指针,我们再去查找数组里的元素时,访问的数组已经不再指向堆内存的数据,就会发生空指针异常的问题;

int[] arr=new arr[4];
arr=null;
System.out.println(arr[0]);
//这里因为把数组赋予了一个空指针,数组的栈内存不再指向堆内存的元素
//再进行查找就会发生空指针异常的问题。

数组的遍历:

a.直接用输出语句输出每一个数组元素

int[] arr={1,2,3,4};
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
System.out.println(arr[3]);

b.for循环遍历

int[] arr={1,2,3,4,5};
for(int i=0;i<=4;i++)
    {
    System.out.println(arr[i]);
}
//数组长度是五,所以设置一个i变量,从0递增到4

这是我们知道数组的长度的条件下遍历的数组,当我们不清楚数组的长度的时候,我们可以用数组名.length去获取当前数组的长度,举例;

int[] arr={1,2,3,4,5,6,7,8,9,};
for(int i=0;i<=arr.length;i++)
    {
    System.out.println(arr[i]);
}

当我们定义两个数组,并且把第一个数组的地址会赋值给第二个数组时,两个数组会共用一个地址:

二维数组:我的理解是一个一维数组里装着其他的一维数组,比如定义一个二维数组arr[3][3],这个时候arr[0]就代表这个二维数组里的第一个一维数组,arr[0][0]就代表这个二维数组里的第一个一维数组的一位元素。

二维数组的定义和一维数组的形式有着类似的样子:

动态初始化:

数据类型[][] 数组名 = new 数组名[长度][长度];
//举例
int[][] arr = new arr[2][3];
//也可以不定义完全
//因为这个二维数组中的一维数组并不一定是相同长度的
int[][] arr = new arr[2][];

静态初始化:

数据类型[][] 数组名=new 数组名[][]{{},{},{}……}
//举例
int[][] arr = new arr[][]{{1,23},{121,123}};
//和一维数组一样可以简化写法
int[][] arr = {{12,312},{123,312}}

二维数组的长度:

数组名.长度表示一位数组的个数;

数组名[].长度表示一维数组中的元素的个数;

//举例
arr.length;
arr[0].length;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值