内存结构
数组定义:
数组是相同类型数据的有序集。
- 数组就是一个对象,数组的每一个元素可以看成一个成员变量。
- 数组一旦被创建,它的大小就是固定的
- 其元素必须是相同类型
- 数组类型可以是任何数据类型,包括基本类型和引用类型
数组的声明方式:
type[] arr_name; //(推荐使用这种方式)
type arr_name[];
1. 数组声明时并没有实例化任何对象,只有在实例化数组对象时,JVM才分配空间,这时才与长度有关。
2. 声明一个数组的时候并没有数组真正被创建。
3. 构造一个数组,必须指定长度。
初始化
1.静态初始化
直接在定义数组的同时就为数组元素分配空间并赋值。
// 静态初始化基本类型数组;
int[] a = {
1, 2, 3 };//[]意为a是一个数组,不可以在[]中指定数组长度;
// 静态初始化引用类型数组;
Man[] mans = {
new Man(1, 1), new Man(2, 2) };
2.动态初始化
数组定义与为数组元素分配空间并赋值的操作分开进行。
int[] a1 = new int[2];//动态初始化数组,先分配空间,指定数组长度;
a1[0]=1;//给数组元素赋值;
a1[1]=2;//给数组元素赋值;
3.默认初始化
int a2[] = new int[2]; // 默认值:0,0
boolean[] b = new boolean[2]; // 默认值:false,false
String[] s = new String[2]; // 默认值:null, null
数组遍历
for-each专门用于读取数组或集合中所有的元素,不能用于修改数组内容;
public class Test {
public static void main(String[] args) {
//静态初始化字符串数组ss
String[] ss = {
"aa", "bbb", "ccc", "ddd" };
//for-each循环:
for (String temp : ss) {
System.out.println(temp);
}
}
}
数组的拷贝
public class Test {
public static void main(String args[]) {
String[] s = {
"aa","xx","vv","dd","jj"};
String[] sBak = new String[6];
System.arraycopy(s,0,sBak,0,s.length);
for (