数组类型:

1.定义及初始化:

数组可以只定义数组引用、定义空间在栈区的数组、定义空间在堆区的数组、通过反射使用Array类定义数组。例子如下:

class Test{
	
	public static void main(String[] args)
	{
		/*栈区分配空间*/
		int[] a = {1,2,3,4};
		/*堆区分配空间*/
		int[] b = new int[] {1,2,3,4};
		/*只定义空间,不填入内容*/
		int[] c = new int[5];
		/*只定义数组引用*/
		int[] d;
		/*通过反射,使用Arrays类创建数组,后面介绍*/	
	}
}

当数组定义的时候,没有明确数组内容的时候;编译器会给数组初始默认值,一般都是为0,null,false。具体如下:

java 数组类型用什么接收 java 类 数组_后端开发

2.foreach循环:

Java 5之后,引入foreach循环,主要目的是用来遍历可迭代对象(数组、集合)

class Test{
	
	public static void main(String[] args)
	{
		int[] b = new int[] {1,2,3,4};
		
		/*b为迭代器,a为迭代子*/
		for(int a : b){
			System.out.println(a);
		}

	}
}

注意:使用foreach循环的时候,迭代子为一个临时变量;所以在foreach循环中,是不能改变迭代器中数据内容的!

3.数组长度获取(length字段):

数组对象唯一可以访问的字段为length,通过length字段可以获得当前引用的数组长度(既数组容量)

数组内存:

1.基本类型数组:new数组后,会在堆区开辟一段基本数据类型的空间,初始默认值为0;然后定义数组引用去指向该空间。

2.引用类型数组:new数组后,会在堆区开辟一段引用类型的空间(既一个引用数组),初始默认值为null;然后定义数组引用指向该引用数组;如果想使用这个数组还需用将引用数组中的引用指向对应的对象!

 

3.可变参数类型与数组类型:

Java8后,函数形参增加了Type...这样的可变参数类型;可以使用多参数作为实参,也可以使用数组作为实参!

public class ArrayTest
{
	public static void main(String[] args)
	{
		int[] a = {1,2,3};
		
		/*int[] i,入参为数组类型的,只能接受数组类型*/
		ArrayTest1(a);
		/*编译报错*/
		//ArrayTest1(1,2,3);
		
		/*int... i,入参为可变参数类型的,即可以接受可变参数类型,也可以接受数组类型*/
		ArrayTest2(1,2,3);
		ArrayTest2(new int[]{1,2,3});
		
	}
	
	private static void ArrayTest1(int[] i)
	{
		System.out.println("int[]");
	}
	
	/*ArrayTest1(int[] i)与ArrayTest1(int... i)不会发生重载,会导致编译报错
	private static void ArrayTest1(int... i)
	{
		System.out.println("int[]");
	}
	*/
	private static void ArrayTest2(int... i)
	{
		System.out.println("int...");
	}
}

Array类和Arrays类:

1.Arrays类:

java.util类中有一个Arrays类,该类提供了一套数组基本操作的static方法(大量方法都根据基本类型和Object类型做过重载),包括:

数组元素赋值:Arrays.fill()

数组排序:Arrays.sort()

Ps:数组排序的规则定制(主要针对对象排序),使用Comparable接口类、或者使用Collections类

数组拷贝:Arrays.copyOf() 

Ps:Java标准库中也提供了一个数组拷贝的方法,System.arraycopy(),注意两者都是浅拷贝(如果数组类型为引用类型,仅仅拷贝引用,而不重新创建引用内容)

数组元素查找:Arrays.binarySearch()

数组转字符串:Arrays.toString()

数组相等判断:Arrays.equals()

数组散列码产生:Arrays.hashCode()

数组转List:Arrays.asList()

java 数组类型用什么接收 java 类 数组_web_02

2.Array类:

java.lang.reflect包下提供一个Array类,可以通过反射来操作数组:

import java.lang.reflect.*;
class Test{
	
	public static void main(String[] args)
	{
		Object Arr = Array.newInstance(int.class,10);
		
		int[] Arr1 = (int[])Arr;
		Arr1[0] = 12;
		System.out.println(Arr1[0]);

		Array.set(Arr,1,10);
		System.out.println(Array.get(Arr,1));		
		
		Array.setInt(Arr,2,11);
		System.out.println(Array.getInt(Arr,2));
		
	}
}

java 数组类型用什么接收 java 类 数组_web_03

Ps:数组与泛型的相关问题,将在泛型的相关文章中具体介绍!<JavaSE学习笔记(10.Java之泛型)>