JavaSE之数组-引用数据类型

1.数组初始化

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

数据类型[ ] 数组名称=new 数据类型[长度]

a、数组通过下标索引来取得元素,下标默认从0开始。数组下标超出数组长度,数组越界异常(运行时异常)
b、数组中每个元素都有默认值,默认值是该数据类型默认值。
c、数组名称.length:取得数组长度
d、数组遍历推荐使用for-each循环(仅限于数组内容读取),要修改数组内容,还是使用常规for循环

for(int x:data){...}

遍历数组:
for(int x:data)
{
  System.out.println(x+" ");
}

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

引用传递:多个栈内存指向同一块空间

1.2数组静态初始化

简化格式:数据类型[]数组名称={值,值…}
完整格式:数据类型[]数组名称=new 数据类型{值,值…}

int[] data =new int[]{1,2,3};

在数组定义时直接设置内容,根据值的个数确定数组长度,且长度不可修改。

1.3二维数组

动态初始化:数据类型[][] 数组名称 =new 数据类型[行个数][列个数]

     int[][] data = new int [3][4];
     int[][] data = new int[3][];

静态初始化:数据类型[][] 数组名称=new 数据类型[][]{{第一行的值},{第二行的值}…}

int [][] data = {{1,2}, {3,4,5,6}, {7,8,9}};

数组与方法的互操作–引用传递
方法接收数组
方法返回数组
方法修改数组

1.4Java对数组的支持

1.排序–java.util.Arrays.sort(数组名称)
eg:

java.util.Arrays.sort(intData);  //整型排序
java.util.Arrays.sort(charData); //字符排序

另一种方式:

import java.util.Arrays; //导入包

Arrays.sort(intData);
Arrays.sort(charData);

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

2.数组部分拷贝

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

3.数组全拷贝**

java.util.Arrays.copyOf(源数组名称,新数组长度):int[ ] java动态数组动态扩容方法

数组的应用

package demo1;

import java.util.Arrays;

public class Test {
	public static void main(String[] arggs) {
		int[] arr = {5,6,3,7,9};
		int[] arr1 = new int[5];
		int[][] date = {{4,5,6},{4,5,6}};
		int[][] date1 = new int[2][3];
		char[] s = new char[] {'s','r','g','w'};
		
		//遍历数组,for-each
		for(int i: arr) {
			System.out.print(i+"  ");
		}
		System.out.println();
		
		//排序:java.util.Array.sort(数组名称)
		Arrays.sort(arr);
		for(int i: arr) {
			System.out.print(i+"  ");
		}
		System.out.println();
		
		Arrays.sort(s);
		for(char i: s) {
			System.out.print(i+"  ");
		}
		System.out.println();
		
		//数组部分拷贝
		System.arraycopy(arr, 1, arr1, 1, 3);
		for(int i:arr1) {
			System.out.print(i+"  ");
		}
		System.out.println();
		
		//数组全部拷贝
		int[] ch = Arrays.copyOf(arr,3);
		for(int i: ch) {
			System.out.print(i+"  ");
		}
		System.out.println();
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值