1.数组初始化
1.1 动态初始化(声明并开辟空间)
数组类型[] 数组名称 = new 数组类型[长度]
例:开辟一个长度为5的字符型数组:
char[] arr = new char[5];
- 数组是通过下标索引来取得元素,下标默认从0开始,数组下标超过数组长度就会发生数组越界异常(属于运行时异常)。
- 数组中每个元素都有默认值,默认值是该数组的类型默认值
- 数组名称.length:取得数组长度。
- for-each循环(仅限于数组内容读取,不能修改数组内容)
for(int x : arr){ //等价于for(int i = 0; i < arr.length;i++)
System.out.println(x + " "); //等价于System.out.println(data[i] + " ");
}
数组属于引用数据类型,必须在使用前先初始化,否则会抛出NullPointerException异常(属于运行时异常)。
1.2 数组静态初始化
数据类型[] 数组名称 = new 数据类型{值,值,…}
例:
int[] data = new int{1, 2, 3, 4};
在数组定义的时候直接设置值,根据值的个数确定数组长度,数组长度一旦确定是不可改变的。
2.JAVA对数组的支持
- 排序
java.util.Arrays.sort(数组名称);----支持所有基本数据类型
例:
public class Test{
public static void main(String[] args){
String[] arr = new String[]{"张三", "王五", "李四"};
java.util.Arrays.sort(arr);
for(String str : arr){
System.out.println(str);
}
}
}
2. 数组的部分拷贝
System.arraycopy(源数组名称,源数组开始点,目标数组名称,目标数组开始点,拷贝长度)
例:
public class Test{
public static void main(String[] args){
String[] str1 = new String[]{"张三", "李四", "王五", "蛋哥"};
String[] str2 = new String[]{"鹏哥", "哈哈", "呵呵"};
System.arraycopy(str1,1,str2,2,1);
for(String str : str2){
System.out.println(str);
}
}
}
3. 数组全拷贝
java.util.Arrays.copyOf(源数组名称,新数组长度)----java动态数组动态扩容
例:
public class Test{
public static void main(String[] args){
String[] str1 = new String[]{"张三", "李四", "王五", "蛋哥"};
System.out.println(java.util.Arrays.copyOf(str1, 10).length);
}
}