【Java SE】数组

目录

数组的创建及初始化

数组的遍历

数组的内存分配

数组的常用方法


数组对于每一门编程语言来说都是重要的数据结构之一,Java中数组可以看成是相同类型元素的一个集合。

数组的创建及初始化

Java中用 类型[] 数组名 = new 类型[数组长度] 来创建一个数组

int[] a1 = new int[10];//创建一个可以容纳10个int类型元素的数组
double[] a2 = new double[10];//创建一个可以容纳10个double类型元素的数组

也可以用 类型 数组名[] = new 类型[数组长度] 来创建一个数组(不推荐)

int a1[] = new int[10];//创建一个可以容纳10个int类型元素的数组

在创建数组的同时可以对数组进行动态初始化或静态初始化

动态初始化:在创建对象时,直接指定数组中元素个数

int[] arr1 = new int[10];//一步到位
int[] arr2; arr2 = new int[10];//分步进行

静态初始:在创建数组时不直接指定数据元素个数,而直接将具体的数据内容进行指定

int[] arr1 = new int[]{1, 2, 3};//根据{}里元素个数确定数组长度
int[] arr2 = {1, 2, 3};//静态初始化可以简写,省去new int[]
int[] arr3; arr3 = new int[]{1, 2, 3}//分步进行(分步进行不能省去new int[])

注:若数组中元素没有进行初始化,则数组中的元素会为其类型对应的默认值shiy

数组的遍历

数组在内存中是移动连续的空间,下标从零开始到N-1,可以通过下标进行访问

Java中遍历数组主要有四种方式

1.逐个遍历

int[]array = new int[]{10, 20, 30}; 
System.out.println(array[0]); 
System.out.println(array[1]);
System.out.println(array[2]);

2.循环遍历

int[]array = new int[]{1, 2, 3}; 
for(int i = 0; i < array.length; i++){
     System.out.println(array[i]); 
}

注:Java中可以通过 数组名.length 来获取数组的长度

3.for-earch遍历

int[] array = new int[]{10, 20, 30};
for (int x:array){
    System.out.println(x);
}
注:for-each 是 for 循环的另外一种使用方式. 能够更方便的完成对数组的遍历. 可以避免循环条件和更新语句写错.
4.先通过Arrays.toString()方法将数组转换成字符串,再将字符串直接打印出来
int[] array = new array[]{1, 2, 3}
System.out.println(Arrays.toString(array));

数组的内存分配

内存是一块连续的存储空间,主要用来存储程序运行时产生的数据,根据不同的数据,JVM对所使用的内存按照功能的不同划分成了程序计数器,虚拟机栈,本地方法栈,堆,方法区

五种。数组内存的分配就要用到堆和虚拟机栈。

Java里的数组是一种引用类型,与基本数据类型是直接在变量空间存放对应的值不同,引用数据类型在变量空间中存放的是其对象所在空间的地址。

下面这段代码

public static void func() { 
     int a = 10;
     int b = 20; 
     int[] arr = new int[]{1,2,3};
}

变量a,b,arr在的内存分配如下:

 

可见,数组变量里并不直接存放数组中的元素,而是存储在堆上的相应对象的地址,通过地址来操作堆上的对象。

数组的常用方法

Java中提供了一个 Arrays 类,Arrays 类提供了许多静态方法可以用于操作数组

1.Arrays.toString()

Arrays.toString()用于将数组转变成字符串

import java.util.Arrays;
public class Test {
    public static void main(String[] args) {
        int[] arr = new int[]{1, 2, 3};
        String str = Arrays.toString(arr);
        System.out.println(str);
    }
}

运行结果如下:

 2.Arrays.copyOf()

Arrays.copyOf()用于拷贝一个指定长度的新数组

import java.util.Arrays;
public class Test {
    public static void main(String[] args) {
        int[] arr = new int[]{1, 2, 3};
        int[] copyOfArr = Arrays.copyOf(arr, 5);
        String str = Arrays.toString(copyOfArr);
        System.out.println(str);
    }
}

运行结果如下:

 

3.Array.copyOfRange()

Array.copyOfRange(int[] original, int from, int to))用于从一个数组的from下标开始拷贝to个长度的数组

import java.util.Arrays;
public class Test {
    public static void main(String[] args) {
        int[] arr = new int[]{1, 2, 3};
        int[] copyOfRangeArr = Arrays.copyOfRange(arr, 0, 4);
        String str = Arrays.toString(copyOfRangeArr);
        System.out.println(str);
    }
}

运行结果如下:

 

 4.Arrays.sort()

Arrays.sort()用于将数组按升序排序,有两种重载方法:

①.Arrays.sort(数组名)

import java.util.Arrays;
public class Test {
    public static void main(String[] args) {
        int[] arr = new int[]{3, 2, 1, 5, 2, 2};
        Arrays.sort(arr);
        String str = Arrays.toString(arr);
        System.out.println(str);
    }
}

运行结果如下:

 

 ②.Arrays.sort(数组名,起始下标,排序个数)

import java.util.Arrays;
public class Test {
    public static void main(String[] args) {
        int[] arr = new int[]{3, 2, 1, 5, 2, 2};
        Arrays.sort(arr, 0, 4);
        String str = Arrays.toString(arr);
        System.out.println(str);
    }
}

运行结果如下:

 

 5.Arrays.equal()

Arrays.equal用于比较两个数组内容是否相等

import java.util.Arrays;
public class Test {
    public static void main(String[] args) {
        int[] a = {1, 2, 3};
        int[] b = {1, 2, 4};
        System.out.println(Arrays.equals(a,b));
    }
}

运行结果如下:

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

记得开心一点啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值