引用类型数组的理解与操作

数组的创建和初始化

创建格式

T[] 数组名 = new T[N];

  • T:表示数组中存放元素的类型
  • T[ ]:表示数组的类型
  • N:表示数组的长度

数组的初始化

数组的初始化主要分为动态初始化和静态初始化

  1. 动态初始化:在创建数组时,直接指定数组中元素的个数。
    int[] array = new int[10];
  2. 静态初始化:在创建数组时不直接指定数据元素个数,而直接将具体的数据内容进行指定。
    int[] array = new int[1,2,3,4,5,];

初识JVM的内存分布

1.什么是JVM?

  • Java 语言的运行环境
  • JVM是运行在操作系统之上的,与硬件没有任何关系。

JVM的分类

  • 类加载器子系统
  • 运行时数据区【我们应该关心的核心】
  • 执行引擎(一般都是JIT编译器和解释器共存)

null

  • null 在 Java 中表示 “空引用” , 也就是一个不指向对象的引用。

  • null 的作用类似于 C 语言中的 NULL (空指针), 都是表示一个无效的内存位置。

引用

引用是个变量。引用变量并不直接存储对象本身,可以简单理解成存储的是对象在堆中空间的起始地址。引用是个左值的统称,如:student s1 = new student(); student s2 = new student(); 通过new可以向内存申请类型大小的空间,左边的引用指向内存中这片开辟的空间,所以通过引用可以拿到这个变量。引用可以理解为左值。(式子左边的变量名)。通过引用可以区分不同对象或不同变量,比如s1、s2都是同一个类的不同对象。也可以理解成给内存地址取了别名。
对象引用:指向存着对象的地址。
类:有一套行为和属性的组合,一套规范。比如人的定义。
对象是具体的一个类。比如张三的定义。

二维数组

二维数组本质上也就是一维数组, 只不过每个元素又是一个一维数组.;同理, 还存在 “三维数组”, “四维数组” 等更复杂的数组, 只不过出现频率都很低

1.二维数组的创建和初始化

动态初始化
int[][] array1 = new int[2][3];
静态初始化
int[][] array2 = new int[][]{{1,2,3},{4,5,6}};
int[][] arrays = {{1,2,3},{4,5,6}};

操作数组的工具类Arrays

toString

功能:把一维层次的数组解析为一个字符串返回

        //toString
        //功能:把一维层次的数组解析为一个字符串返回
        int[] arr={1,2,3,4,5,6};
        int[][] ret={{6,6,6,},{7,7,7}};
        System.out.println(Arrays.toString(arr));
        System.out.println(Arrays.toString(ret[0]));
        System.out.println(Arrays.toString(ret[1]));

deepToString

功能;把多维数组转换成字符串返回

        //deepToString
        //功能;把多维数组转换成字符串返回
        int brr[][]={{1,1,1,},{2,2,2,}};
        System.out.println(Arrays.deepToString(brr));

copyOf

功能;实现数组拷贝

        //copyOf
        //功能;实现数组拷贝
        int[] array={1,2,3,4,5,10,11,12,13,99,98,87};
         //将array拷贝到array2
        int[] array2=Arrays.copyOf(array,array.length);
         //扩容数组array3是arr的二倍,同时将数组array拷贝到array3
        int[] array3=Arrays.copyOf(array,2*array.length);
        System.out.println(Arrays.toString(array2));
        System.out.println(Arrays.toString(array3));

copyOfRange

功能:主要用于对一个已有的数组进行截取复制(局部拷贝),复制出一个左闭右开区间的数组。

        //copyOfRange
        //功能:主要用于对一个已有的数组进行截取复制(局部拷贝),复制出一个左闭右开区间的数组。
        int crr[] ={1,3,5,7,91};
        int crr2[]=Arrays.copyOfRange(crr,2,5);
        System.out.println(Arrays.toString(crr2));

arraycopy(拓展,不属于Arrays类)

功能:实现数组的局部拷贝

        //arraycopy(拓展,不属于Arrays类)
        //功能:实现数组的局部拷贝
        int drr[]={1,2,3,4,56,78,90,12,36,77};
        int drr2[]=new int[drr.length];
        //局部的拷贝
        System.arraycopy(drr,0,drr2,3,drr.length-3);
        System.out.println(Arrays.toString(drr2));

clone(拓展,不属于Arrays类)

功能:实现对象的克隆,数组是对象,所以可以用作拷贝数组。

        // clone(拓展,不属于Arrays类)
        //功能:实现对象的克隆,数组是对象,所以可以用作拷贝数组。
        int err[]={1,3,5,7,9,11,56,99};
        int err2[]=err.clone();
        System.out.println(Arrays.toString(err2));

equals

功能:比较俩个数组是否相等,相等返回true,不相等返回false

        //equals
        //功能:比较俩个数组是否相等,相等返回true,不相等返回false
        int frr[]={1,2,3,4,5,6,77,88,99,11};
        int frr2[]={1,2,3,4,5,6,77,88,99,11};
        boolean fr=Arrays.equals(frr,frr2);
        System.out.println(fr);

fill

功能:给数组中的元素填充为一个固定的值,可以完全填充也可以局部填充,局部填充时参数左必右开

        // fill
        //功能:给数组中的元素填充为一个固定的值,可以完全填充也可以局部填充,局部填充时参数左必右开
        int grr[]={1,2,3,4,5,6,77,88,99,11};
        int grr2[]={1,2,3,4,5,6,77,88,99,11};
        Arrays.fill(grr2,6);
        Arrays.fill(grr,2,5,0);
        System.out.println(Arrays.toString(grr));
        System.out.println(Arrays.toString(grr2));

binarySearch

功能:查找数组中元素(二分查找),找到返回下标,找不到返回一个负数

        //binarySearch
        //功能:查找数组中元素(二分查找),找到返回下标,找不到返回一个负数
        int hrr[]={1,2,3,4,5,6,77,88,99,11};
        Scanner scan=new Scanner(System.in);
        int k=scan.nextInt();
        int pos=Arrays.binarySearch(hrr,k);
        System.out.println("下标为:>"+pos);

sort

功能:将数组中的元素进行排序,默认排成升序

        //sort
        //功能:将数组中的元素进行排序,默认排成升序
        int irr[]={1,2,3,4,5,6,77,88,99,11};
        Arrays.sort(irr);
        System.out.println(Arrays.toString(irr));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值