JavaSE -- 数组详细讲解(数组介绍,Arrays常用方法,二维数组创建)

数组

简介

数组是引用数据类型,是一种容器。是一组相同类型数据的组合,将这一组数据做统一管理。

  • 栈内存中只存有数组的引用(地址)

  • 数组中的变量类型如果是基本数据类型(int,double),则基本类型元素值直接存在堆内存的数组对象内部

  • 如果是引用数据类型(String),则这些引用类型的地址(引用)存储在堆内存的数组对象内部。而这些引用数据单独存储在堆内存的其他位置,数组中的地址指向他们。

数组声明

数组创建出来后会在堆内存中开辟一块连续的空间地址

  • 数组静态创建
int[] x = new int[]{1, 2, 3}; // 方式一
double y = {1.2, 1.3, 1.4}; //方式二
  • 数组动态创建
int[] x = new int[10];

Arrays方法

  • Arrays.sort(x[]): 基于快速排序实现排序,默认升序排序

  • Arrays.sort(x[],st,ed): 部分排序,只将数组 x[] 下标在 [st, ed) 中的元素进行排序

  • Arrays.toString(x[]) :将数组 x[] 转为字符串 “[1,2,3]”

  • Arrays.fill(x[], num) :将数组 x[] 中所有元素用数字 num 进行填充替换

  • Arrays.fill(x[], st, ed, num): 将数组 x[] 中下标范围 [st, ed) 内的元素用 num 进行填充替换

  • Arrays.binarySearch(x[], num) : 用二分在数组中找到值为 num 的下标,如果没有找到就返回一个负数

  • int[] y = Arrays.copyOf(x, size): 先创建大小为 size 的数组,然后将数组 x[] 中前 min(x.length(),size):的数复制过去,并返回,可用于实现数组自动扩容

  • int[] y = Arrays.copyOfRange(x, 1, 3): 将数组 x[] 中的下标为 [1, 3) 的元素复制给 y[] 数组

  • Arrays.equals(x[], y[]): 比较数组 x[] 和 y[] 是否相同,比较的数组内元素是完全相同

  • Arrays.compare(x[], y[]) :比较数组 x[] 和 y[] 的大小(按字典序,下标从小到大依次比较),(x == y)返回 0(x < y) 返回负数,(x > y) 正数

二维数组

不同于C语言的二维数组,Java中的二维数组, 模拟形态不一定是一个矩形,也就是第二维数组大小可以不相同

静态创建
int[][] a = {{1, 2},{1, 2, 3}};
int[][] b = new int[][]{{1, 2}, {1, 2, 3}};
动态创建

此时第二维还没有被初始化,然而在 Java 当中第一维其实是一个数据类型是数组的数组,当没有赋值时,默认是null, 当访问 a[1][0] 会产生空指针异常

int[][] a = new int[3][];
初始化
  • 方式一
int[][] a = {{1, 2},{1, 2, 3}};
int[][] b = new int[][]{{1, 2}, {1, 2, 3}};
  • 方式二
int[][] a = new int[3][];
int arr1 = {1, 2, 3};
int arr2 = {1, 2};
int arr3 = {1};
a[0] = arr1;
a[1] = arr2;
a[2] = arr3;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值