java之数组

本文详细介绍了Java中的数组,包括数组的定义、初始化方式(动态和静态),访问元素,for each循环,数组拷贝(for循环、System.arraycopy()、Arrays.copyOf()及clone方法)以及数组排序。还探讨了多维数组的创建和遍历,以及Java虚拟机的内存划分。通过实例代码解释了各种操作,强调了数组拷贝的深拷贝和浅拷贝概念。
摘要由CSDN通过智能技术生成

java之数组

数组的概述

  • 数组是存储多个变量(元素)的东西(容器)
  • 这多个变量的数据类型要要一致

数组:存储同一种数据类型的多个元素容器

数组定义格式

A:数据类型[] 数组名;

B:数据类型数组名[];

举例:

​ int[]arr; 定义了一个int类型的数组,数组名是arr

​ int arr[] ;定义了一个int类型的变量,变量名是arr数组

//不推荐

因为第一种可以将类型int与变量名清晰地分开。

错误的声明数组的方式,声明数组的时候不能指定其大小

int [5] intErrorArray0;

int intErrorArray1[5];

数组初始化

java中数组必须先初始化,然后才能使用。

所谓初始话,就是为了数组中的数组元素分配内存空间。并为每个数组元素赋值。

数组的初始化方式

动态初始化

动态初始化:初始化时只指定数组长度,又系统为数组分配初始值。

格式: 数据类型[]数组名 = new 数据类型[数组长度]

举例:

int[]arr = new int[3];

左边:

​ * int:说明数组中的元素的数据类型是int类型

​ * []:说明这是一个数组

​ * arr:是数组的名称

右边:

​ * new:为数组分配内存空间

​ * int:说明数组中的元素的数据类型是int类型

​ * 3:数组的长度,其实就是数组中的元素个数

​ * []:说明这是一个数组

注意:一旦创建了数组,就不能在改变它的长度(不过,当然可以改变单个的数组元素)。如果程序运行中需要经常扩展数组的大小,就应该使用另一种数据结构——数组列表(array list)

静态初始化

静态初始化;初始化时指定每个数组元素的初始值,由系统决定数组长度

例如:

​ int[] smallPrimes = {2,3,5,7,11,13};

最后一个值后面允许有逗号,如果你要不断为数组增加值,这回很方便。

还可以声明一个匿名数组:

​ new int [] {17,19,23,29,31,37}

这会分配一个新数组并填入括号中提供的值,它会统计初始值的个数,并相应地设置数组大小。可以使用这种语法重新初始化一个数组而无须创建变量。例如:

array = new int[] {1, 2, 5, 89};

这个语句是下面语句的简写:

int[] tempArray = {1, 2, 5, 89};

array = tempArray;

注意:在Java中允许数组长度为0。在我们要编写一个结果为数组的方式时,如果碰巧结果为空,那么这种语法形式显得特别有用。此时可以创建一个长度为0的数组:值得注意的是:数组长度为0和null是不一样的,这个需要特别注意。null代表这个数组并不存在,长度为0表示这个数组不包含任何元素,但是数组是存在的。

访问数组元素

创建一个数字数组时,所有元素都初始化为0。

boolean数组的元素会初始化为false。

对象数组的元素则初始化为一个特殊值null,表示这些元素还未存放任何对象。

注意:访问超过了数组的元素,就会出现“array index out of bounds”异常。

想要获得数组中的元素个数,可以用array.length。

for each 循环

java有一种功能很强的循环结构,可以用来依次处理数组(或者其他元素集合)中的每个元素,而不必考虑指定下的值。

格式:

​ for(循环对象的类型 元素名:对象名){

语句

}

for 循环写法

int[] arr ={1,2,3,4,5};

for(int i = 0; i<arr.length; i++){

System.out.println(arr[i]);

}

for each格式

for(int data :arr){

System.out.println(data);

}

总结:for each循环语句显得更加、更不易出错,因为你不必为了下标的起始值和终止值而操心。如果需要用下标值时或者不想遍历所有元素的时候。

还有一个更加简单的方式打印数组中的所有值,即利用Arrays类的toString方法。调用Arrays.toString(a),返回一个包含数组元素的字符串,这些元素包括在中括号内,并用逗号分隔,例如,“[2,3,5,7,11,13]”。要想打印数组,只需要调用

System.out.print(Arrays.toString(a));

数组拷贝

分别为:for clone() System.arraycopy()Array.copyOf()

要研究数组的拷贝,先看看浅拷贝与深拷贝的概念:
概括起来讲,浅拷贝就是指两个对象公用一个值,一个的改变了另一个也会随之改变,深拷贝则是两个对象虽然值相等,但是相互独立互不影响。

一、For写法

       public static void main(String[] args) {
         int[] array1 = new int[]{1, 2, 8, 7, 6};
         int[] array2 = new int[array1.length];
         for (int i = 0;i < array1.length;i++){
        array2[i] = array1[i];
}

        System.out.println("arra
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值