JavaSE - 数组

一、一维数组的初始化

数组属于引用数据类型,必须在使用前初始化,否则会报NullPointerException异常(运行时异常)。

引用传递:多个栈内存指向同一个堆内存。

1.动态初始化(声明并开辟数组)

数据类型[] 数组名称 = new 数据类型[长度];
eg:
// 声明并开辟一个长度为5的整数数组
int[] data = new int[5];

(1)数组通过下标索引来取得元素,下标默认从0开始;

         如果下标超出数组长度,数组越界异常(属于运行时异常)。

(2)数组中每个元素都有默认值,该默认值是数组数据类型的默认值。

(3)数组名称.length,取得数组长度。

(4)数组遍历推荐使用 for-each 循环(JDK1.5)。

         因为 for-each 循环只能读取数组内容,而不能修改;要想修改内容,还是要用常规 for 循环。

for-each 循环:
int[] data = new int[]{1,2,3};
for(int x : data){
    . . .
}

2.静态初始化

在数组定义时直接设置内容,根据值得个数确定数组长度,且一旦定义好数组长度不能修改。

(1)简化格式

数据类型[] 数组名称 = {值,值,...};
eg:
int[] data = {1,2,3,4,5};

(2)完整格式(推荐)

数据类型[] 数组名称 = new 数据类型[]{值,值,...};
eg:
int[] data = new int[]{1,2,3,4,5};

匿名数组只支持完整格式,且所有的匿名空间只使用一次,使用完之后就相当于垃圾。

二、二维数组的初始化

1.静态初始化

数据类型[][] data = new 数据类型[][]{{值,值,...},{值,值,...},...};
eg:
int[][] data = new int[][]{{1,2,3},{4,5,6}};

2.动态初始化

数据类型[][] 数组名称 = new 数据类型[行个数][列个数];
eg:
int[][] data = new int[3][4];

三、数组与方法的互操作

(1)方法接收数组

(2)方法返回数组

(3)方法修改数组

1.java中对数组的支持:(静态方法、工具方法)

(1)排序支持:java.util.Arrays.sort(数组名称);

支持所有基本数据类型数组;内部使用双轴快速排序。

(2)数组的部分拷贝

System.arraycopy(源数组名称, 源数组开始点, 目标数组名称, 目标数组开始点, 拷贝长度);

public static void main(String[] args){
    int[] data = new int[]{1,2,3,4,5};
    int[] data1 = new int[10];
    System.arraycopy(data,0,data1,3,5);
    for(int i:data1){
        System.out.print(i + " ");
    }
}
输出结果为:
0 0 0 1 2 3 4 5 0 0 

(3)数组全拷贝

java.util.Arrays.copyOf(源数组名称, 新数组长度); 返回 int[ ]

从源数组第一个元素开始拷贝新数组长度个元素到新数组中

java动态数组动态扩容

public static void main(String[] args){
    int[] data = new int[]{1,2,3,4,5};
    int[] data1 = new int[10];
    int[] data2 = java.util.Arrays.copyOf(data,data1.length);
    for(int i:data2){
        System.out.print(i + " ");
    }
    System.out.println();
    int[] data3 = new int[3];
    int[] data4 = java.util.Arrays.copyOf(data,data3.length);
    for(int i:data4){
        System.out.print(i + " ");
    }
}

输出结果为:

1 2 3 4 5 0 0 0 0 0 
1 2 3 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值