数组——Java

数组

  • 数组的用法
    • 什么是数组
    • 数组的创建
    • 数组的使用
    • 数组的遍历
      • 遍历方法一:for 循环
      • 遍历方法二:foreach 循环
  • 数组作为方法的参数
    • 数组传参
    • null 引用
  • 数组作为方法的返回值
  • 数组练习
    • 数组转化为字符串
    • 数组拷贝
      • Arrays.copyOf
      • Arrays.copyOfRange
      • System.arraycopy
      • 数组名.clone
    • 二分查找:Arrays.binarySearch
    • 数组排序:Arrays.sort
  • 二维数组
    • 二维数组的打印

数组的用法

什么是数组

数组就是同类元素的集合。相同类型的数据,放在一起就是数组。

数组的创建

Java 当中的数组有三种创建方式。如下:

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

这三种的意思分别是:

1 直接创建数组,并且初始化为 1,2,3,4,5
2 创建一个大小为 5 的数组
3 创建一个大小为 5 的数组,并且初始化为 1,2,3,4,5

new 是一个关键字,把数据开辟在堆区。

数组的使用

数组的访问也是通过下标来获取元素对应的值。不过在 Java 当中,数组的长度可以用 length 直接算出。代码示例:

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

数组——Java_第1张图片
通过 arr.length 来直接算出数组的长度。因为 arr.length 事数组的长度,所以访问的时候,最大范围就是 arr.length - 1 。

数组的遍历

遍历方法一:for 循环

通过 for 循环来把数组内容全部遍历一遍。代码示例:

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

在这里插入图片描述
这里就是通过 for 循环来遍历数组并且打印输出。

遍历方法二:foreach 循环

foreach 有三个参数。第一个是数组的元素类型,第二个是变量名称,第三个是数组名。代码如下:

int[] arr = new int[]{
     1,2,3,4,5,6,7,8,9,10};
for (int x: arr) {
     
    System.out.print(x+" ");
}
System.out.println();

在这里插入图片描述
用 foreach 也可以实现,但是和 for 循环的区别是:foreach 循环只能遍历,并不能返回下标。

数组作为方法的参数

数组传参

在 Java 当中,数组也是可以作为参数传递的。接收的时候也用数组接收就好了。代码示例:

public static void print2(int[] ret){
     
    for (int i = 0; i < arr.length; i++){
     
        System.out.print(arr[i]+" ");
    }
    System.out.println();
}
public static void main(String[] args) {
     
    int[] arr = new int[]{
     1,2,3,4,5,6,7,8,9,10};
    print2(arr);
}

在这里插入图片描述
这里就是通过参数把数组 arr 传到打印方法里面,然后通过方法输出值。

在方法接收的时候,其实是数组的引用。数据放在堆区,变量放在栈区,用新的参数来接收对取数据的地址,就是引用。就是下图的这种关系。
数组——Java_第2张图片
通过栈区的另外一个变量也能访问到堆区的数据。

null 引用

因为有引用,引用就是指向的对象。所以就有 null 指向的对象为空。

数组作为方法的返回值

数组也可以和其它类型一样作为方法的返回值。代码如下:

public static int[] newArr(){
     
    int[] ret = new int[]{
     1,2,3,4,5};
    return ret;
}
public static void main(String[] args) {
     
    int[] arr = newArr();
    System.out.println(Arrays.toString(arr));
}

在这里插入图片描述
在方法里面 new 一个数组,然后返回。

数组练习

数组转化为字符串

通过 toString 方法来把数组转化为字符串。代码示例:

int[] arr = new int[]{
     1,2,3,4,5,6,7,8,9,10};
String str = Arrays.toString(arr);
System.out.println(str);

在这里插入图片描述
通过 Arrays.toString 方法,来把数组转化为字符串。

数组拷贝

Arrays.copyOf

Arrays.copyOf() 方法,有两个参数,第一个是源数组,第二个是要拷贝的长度。代码示例:

int[] arr = new int[]{
     1,2,3,4,5};
int[] ret = Arrays.copyOf(arr, arr.length);
System.out.println(Arrays.toString(ret));

在这里插入图片描述
这里就完成了数组的拷贝。如果长度变为 2 * arr.length 就是数组的扩容。

Arrays.copyOfRange

Arrays.copyOfRange 有三个参数,第一个是源数组,第二个是数组的起始下标,第三个是数组的结束下标。要注意的是:Java 当中的范围都是左闭右开。代码示例:

int[] arr = new int[]{
     1,2,3,4,5};
int[] ret = Arrays.copyOfRange(arr,1,3);
System.out.println(Arrays.toString(ret));

数组——Java_第3张图片
因为是拷贝的下标 1 到 下标 3 所以只有两个数据,就是 2 3 。

System.arraycopy

System.arraycopy 有五个参数:第一个是原数组,第二个是从原数组的开始拷贝位置,第三个是拷贝的目的地数组,第四个是 目的地数组的开始位置,第五个是拷贝长度。

int[] arr = new int[]{
     1,2,3,4,5};
int[] ret = new int[arr.length];
System.arraycopy(arr,0,ret,0,arr.length);
System.out.println(Arrays.toString(ret));

在这里插入图片描述

数组名.clone

数组名.clone 就是直接把数组克隆出来,产生一个一模一样的副本。代码示例:

int[] arr = new int[]{
     1,2,3,4,5};
int[] ret = arr.clone();
System.out.println(Arrays.toString(ret));

在这里插入图片描述

二分查找:Arrays.binarySearch

Java 当中提供了一种查找方法 Arrays.binarySearch 有两个参数,第一个是需要查找的数组,第二个是要查找的元素。代码示例:

int[] arr = new int[]{
     1,2,3,4,5,6,7,8,9,10};
int ret = Arrays.binarySearch(arr, 5);
System.out.println(ret);

在这里插入图片描述
查找之后返回的是下标,所以就是 4 。

数组排序:Arrays.sort

Arrays.sort 只需要把数组名传进去就可以完成排序。代码示例:

int[] arr = new int[]{
     1,4,2,9,5,10,7,6,8,3};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));

在这里插入图片描述
这样就完成了对数组的排序。

二维数组

二维数组的本质是一维数组,不过每个元素有是一维数组。如下图:
数组——Java_第4张图片
把 arr[0] 和 arr[1] 看成一维数组,arr[0] 又是一行的一维数组。所以说二维数组的本质也是一维数组。

二维数组的表示也有三种表示方法。如下示例:

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

二维数组的打印

打印二维数组的时候,用两个 for 循环嵌套就好。或者用深度打印:Arrays.deepToString 代码示例:

int[][] arr = new int[][]{
     {
     1,2,3},{
     4,5,6}};
System.out.println(Arrays.deepToString(arr));

在这里插入图片描述

你可能感兴趣的:(java,排序算法,数组)