数组相关学习

数组

含义:数组是相同类型数据的有序集合。

特点:

1.长度确定,一旦创建不可改变。

2.元素的类型必须是相同类型,不允许出现混合类型。

3.数组类型可以是基本类型和引用类型。

4.数组有索引的:索引从0开始,到 数组.length-1 结束

5.数组变量属于引用类型,数组也是对象,数组中的每个元素相当于该对象的成员变量。数组本身就是对象,Java中对象是在堆中的,所以数组也在堆中。

//数组声明
int[] arr; 
//数组创建
arr= new int[1];
 //赋值
 arr[0] = 12;

数组的初始化方式总共有三种:静态初始化、动态初始化、默认初始化。

静态初始化:直接在定义数组的同时就为数组元素分配空间并赋值。

int[] arr1 = {1,3,4};
int[] arr2 = new int[]{3,4,5};

动态初始化:数组的定义与赋值分开进行。

int[] arr ;
arr = new int[2]
arr[0] = 11;
arr[1] = 12;

默认初始化:数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。

//数组有默认的初始化值
int[] arr = new int[3];  

初始化默认值

args = {String[0]@540} 
a1 = {byte[1]@541} 
 0 = 0
a2 = {short[1]@542} 
 0 = 0
a3 = {int[1]@543} 
 0 = 0
a4 = {long[1]@544} 
 0 = 0
a5 = {float[1]@545} 
 0 = 0.0
a6 = {double[1]@546} 
 0 = 0.0
a7 = {char[2]@547} 
 0 = '\u0000' 0
 1 = '\u0000' 0
a8 = {boolean[1]@548} 
 0 = false
a9 = {String[6]@549} 
All elements are null

Arrays工具类

int[] arr = new int[]{2,4,6,3,4};
//toString:将数组元素转成字符串
System.out.println(Arrays.toString(arr));//结果:[2, 4, 6, 3, 4]
/**二分查找binarySearch,找出指定数组中的指定元素对应的索引,如果有相同值会给出第一个值所在索引,但必须有序才能用*/
//sort升序
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
System.out.println(Arrays.binarySearch(arr, 4));
/**结果:[2, 3, 4, 4, 6]
       2
       */
       //copyOf复制数组,前面写要复制的数组,后面写复制长度
       int[] arr2 = new int[]{2,6,4,8,9};
       arr=Arrays.copyOf(arr2,3);
       System.out.println(Arrays.toString(arr));
/**结果:[2, 6, 4]
       */
       //copyOfRange:区间复制:
        int[] newArr2 = Arrays.copyOfRange(arr2,1,4);//[1,4)-->1,2,3位置
        System.out.println(Arrays.toString(newArr2));
        /**结果:[6, 4, 8]
       */
        //fill:数组的填充:
        Arrays.fill(arr2,8);
        System.out.println(Arrays.toString(arr2));
//结果: [8, 8, 8, 8, 8]

二维数组

实际上是多个一维数组组成,int[3] [4]是个3 行 4 列的二维数组,也就是3个一维数组组成。

int len1=arr.length;行长度,二维数组的长度都是说行长度
int len2=arr[i].length.列长度
 int[][] arr = new int[3][];
        System.out.println(arr.length);//长度为3
        //创建一个数组并赋值给下标为0的数组
        arr[0] = new int[]{0,1,2,3};
        arr[1] = new int[]{4,5,6};
        arr[2] = new int[]{7,8,9};
        //对二维数组遍历:
        //方式1:外层普通for循环+内层普通for循环:
        for (int i=0;i < arr.length; i++){
            for (int j = 0; j < arr[i].length; j++) {
                System.out.print(arr[i][j]+"\t");
            }
            //每行遍历完成后换行
            System.out.println();
        }
        //方式2:外层普通for循环+内层增强for循环:
        //遍历数组长度,然后取出每行一维数组长度的元素值
        for (int i = 0; i < arr.length; i++) {
            for(int j : arr[i]){
                System.out.print(j+"\t");
            }
            System.out.println();

        }
        //方式3:外层增强for循环+内层增强for循环:
        //外层遍历二维数组共有几个一维数组,然后取出每行一维数组长度的元素值
        for(int[] a : arr){
            for(int i : a){
                System.out.print(i+"\t");
            }
            System.out.println();
        }
        //方式4:外层增强for循环+内层普通for循环:
        for (int[] a : arr){
            for (int i = 0; i <a.length ; i++) {
                System.out.print(a[i]+"\t");
            }
            System.out.println();
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值