1.定义数组: type[] arrayName;不推荐type arrayName[]; 数组是一个引用变量,相当于指针,指向堆内存空间,定义时这个引用变量还未指向有效内存,所以也不存在指定长度之说 2.初始化数组: 数组必须先初始化才能使用。两种形式: 静态初始化:arrayName=new type[]{element1,element2,...} 动态初始化:只指定长度,由系统为每个元素赋初始值,0、false、null 3.遍历数组 foreach循环 for(type variableName : arrayName) { //variableName迭代访问每个数组元素 } 4.Arrays类的类方法 void sort(type[] a);对数组元素进行排序(从小到大) void sort(type[] a,int begin,int end);索引字段元素排序 String toString(type[] a);将一个数组转换成字符串,多个元素之间 使用逗号和空格分开,再加上中括号 强调一个东西:String toString()方法很常见,因为它是Object类的一个实例方法(非静态方法),通常会被子类重写 Arrays类重写了toString方法全是有参的,无法直接打印Arrays类。由于Object是所有类的父类,因此ArrayTest类的实例也会有一个 toString()无参的方法,用来返回自我描述字符串。打印实例名,实际上是调用了这个实例的toString()方法,这是打印对象的实质。 默认的形式是:类名+@+hasCode 在DataTypeTest.java里提到过包装类的toString方法可以将基本类型转换成字符串 5.二维数组 A.定义二维数组 语法是:type[] [] arrayName; 含义是:arrayName这个数组里的每个元素都是type[],即每个元素都是数组的数组,是为二维数组 B.初始化二维数组 arrayName=new type[length] [x]; 其中length是arrayName的长度,相当于动态初始化了;必须指定x的值,x为元素数组进行动态初始化 例子: int[] [] a=new int[2] [4];(与正常理解恰好相反了) 含义是:a是一个长度为2的二维数组,它的数组元素是int型数组,每个元素数组的长度为4,可以foreach 嵌套来遍历这个数组,如上。 C.实质:“数组的数组”即“引用的数组”
package knowledge_basic;
import java.util.Arrays;
public class ArrayTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] a=new int[]{10,4,3,2,5,6,9,8,7,1};
int[] b=new int[10];
Arrays.sort(a);
for(int out:a)
{
System.out.print(out+" ");
}
System.out.print("\n");
for(int out:b)
{
System.out.print(out+" ");
}
System.out.print("\n");
char[] c=new char[]{'H','e','l','l','o',' ','W','o','r','l','d','!'};
for(char out:c)
{
System.out.print(out+" ");
}
System.out.print("\n");
String s=Arrays.toString(a);
System.out.println(s);
System.out.println(new ArrayTest());
int[] [] arrayName;//定义
arrayName=new int[3] [4];//初始化
for(int[] a1:arrayName)
{
for(int a2:a1)
{
System.out.print(a2+" ");
}
System.out.print("\n");
}
}
}
1 2 3 4 5 6 7 8 9 10
0 0 0 0 0 0 0 0 0 0
H e l l o W o r l d !
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
knowledge_basic.ArrayTest@15db9742
0 0 0 0
0 0 0 0
0 0 0 0