一维数组与二维数组的定义与使用

数组与定义

数组是用来存储一组相同类型数据的数据结构,数组在初始化完毕后,Java会为数组在内存中分配一段连续的内存空间。

在数组开辟空间之后,数组的大小就会被固定,长度不会再发生改变,即使数组没有被存入任何数据,数组依旧会占有开辟空间大小的空间。

数组的声明与使用

数组的声明

数组的声明使用总共分为四个步骤
一、数组的声明      包括:数组名,数据类型,[]
二、为数组分配空间   必要,否则会出现错误
三、数组各元素的赋值  注意:数组的各元素必须与声明的数据类型完全相同
四、数组的使用

数组的声明与分配空间是可以在一起进行的,如:

//合在一起
int [] arr1 = new int [3];
int arr2 [] = new int [5];
//分开写
int [] arr3;
arr3 = new int [3];

但是根据某公司的java文档规范,[]必须要跟在数据类型后面。。。

如果在为数组分配空间时没有分配空间,数组不一定会出现逻辑错误,但是在编译时会出现编译错误

不管是哪一种声明方式,在进行了声明数组,并且分配空间之后,数组即使没有被赋值也拥有初始值,初始值根据声明数组的数据类型有所不同

数组元素类型默认初始值
byte、short、int、long0
float、double0.0
char'\u0000'
booleanfalse
引用数据类型null

当数组被赋值的元素比较少,而且方便赋值的话,有时会把赋值操作和定义数组操作一起完成,被称之为数组初始化。语法格式如下:

数据类型[]数组名 = {值1,值2,值3......}
或者
数据类型[]数组名 = new 数据类型[]{值1,值2,值3......}

注意1:后一种定义方式,在new 数据类型的[]中一定不要加入数字,否则会被认为不是一条语句。

注意2:如果采用这样的数组初始化的方式声明数组,一定不要将上述代码拆成两段,这样依旧会提示错误:不能在这里赋值。

//错误示范
int[] arr1 = new arr[3];
arr1= {1,2,3};

 

数组的使用

在使用数组时,我们使用数组的下标来准确的定位到数组中的每个元素          数组名[下标值]。

数组的下标从0开始,0是数组的第一个元素,1是数组第二个元素。

[数组长度]可以通过   数组.length  属性来获取数组的长度。

arr1[0] = 1;

数组的遍历

有了数组的下标和数组的长度,我们就可以让数组和for循环结合,使数组进行动态存储和快速遍历的应用。

使用Scanner和for循环输入数组:

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入数组长度:");
        int num = sc.nextInt();
        int[] arr1 = new int[num];
        for (int i = 0;i<arr1.length;i++){
            System.out.print("请输入数组元素:");
            arr1[i]= sc.nextInt();
        }
    }

此时我们可以使用for循环来遍历数组,也可以使用增强for循环来输出数组。

        //遍历输出数组
        for (int i = 0;i< arr1.length;i++){
            System.out.print(arr1[i]+" ");
        }

        //增强for
        for (int i:arr1){
            System.out.print(i+" ");
        }

输出结果为:

数组添加

数组的添加要求遍历数组,使用if来找出想要添加的位置,从末尾开始依次向后移动一个下标,最后再把要加入的元素添加进去。

注意在一开始移动末尾元素时要考虑数组越界问题。

数组修改

数组修改则简单的多,只需要遍历数组,找出需要修改的值,将修改的元素赋值给原先元素即可。

注意要考虑数组内可能不存在索要查找的元素。

数组删除

数组删除要求遍历数组,找到需要删除的元素,将要删除元素的后一个下表的元素赋值给当前元素,并且之后的元素依次(从前向后)向前移动一个下标即可,将最后一位设置为空。

注意: arr1.length返回的值是数组的长度  是数组的   最后一个下标+1,注意在for循环中不要出现越界问题。

二维数组

语法结构

数据类型 数组名[][]
或者数据类型[][]数组名

如:
int [][]score;
score = new int[5][50]
或者
int [][] scores = new int [5][50]

二维数组本质上还是一维数组,数组的每一个元素内存放的元素都为一维数组。

二维数组的使用

初始化二维数组:

int[][]scores = new int [][]{{1,2,3,4,5},{1,2,3},{1}};
或者
int scores[][] = {{1,2,3,4,5},{1,2,3},{1}}

二维数组的遍历与累加

int [][]array = new int [][]{{1,2},{1,2,3},{1,2}};
int sum;
for(int i = o;i<array.length;i++){
    for(int j=0;j<array[i].length;j++){
        total += array[i][j];    
    }
}

Arrays类的使用

arrays类是jdk提供给,用于操作数组的工具类,可以提供排序,复制,比较,填充,查询等功能

常用方法如下:

equals(arr1,arr2)boolean比较数组是否相等
sort(array)void对数组进行升序排列
toString(array)String将数组转换为字符串
fill(array,val)void把数组的所有元素都复值为val
copyOf(array,length)与array类型一致把数组复制成一个长为length的新数组
binarySearch(array,val)int查询元素值val在数组的下标

 

int [] arr1= {1,2,3};
int [] arr2={1,2,3};
int []arr3 = {4,2,1};
System.out.println(Arrays.equals(arr1,arr2)); //true
System.out.println(Arrays.equals(arr1,arr3));  //false
Arrays.sort(arr3); //{1,2,4}
System.out.println(Arrays.toString(arr1));//[1,2,3]
Arrays.fill(arr2,10);//{10,10,10}
int [] arr4 = Arrays.copyOf(arr2,2);//{10,10}
int [] arr5 = Arrays.copyOf(arr2,5);//{10,10,10,0,0}
//使用binarySearch()之前必须进行sort排序
System.out.println(Arrays.binarySearch(arr3,4));//2  注意:这里的下标指排序之后的下标

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值