数组

声明数组
1,一组相同类型的数据
2,数组是一个对象
这个对象只有一个属性,length 数组的长度
3,声明一个数组不创建一个对象
4,数组可以用下列方法声明

int[] iArray 或者 int iArray[]
Teacher[] tArray 或者 Teacher tArray[]

4.2.创建数组
数组在创建的时候必须指定长度。
数组的长度一经确定就不能改变.

1,创建一个原始数组
int[] arr = new int[2];
2,创建一个类数组

Teacher[] teacher = new Teacher[100];

3,数组中的元素会被赋默认值.

4.3.初始化数组
给数组中的元素赋值,就是初始化数组
数组具有下标,下标从0开始,最大的下标为length-1
初始化数组的时候下标不能操作最大值,也不能为负数。

1基本数据类型的数组初始化:
int[] iArray;
iArray = new int[2];
iArray[0] = 0;
iArray[1] = 1;
或者:
int[] arr = {12,3,4,5,67,8};
或者:
int[] arr = new int[]{1,2,3,4,5,6};

2 引用数据类型数组初始化

Student sArray[] = new Student[] { 
	new Student(“Larry”, “Male”, 20), 
           new Student()
};

注意:引用数据类型的数组,其每个元素都是引用数据类型的值,也就是对象。

4.4.多维数组
数组可以存放任意数据类型的数据,那么也可以存放数组类型的数据。
如果数组存放数据类型的数据,那么这个数组就是多维数组。

声明
语法 数据类型[][] args = new 数据类型[数组的长度][];
例:int[][] args = new int[5][];
赋值:
args[0] = new int[3];
args[1] = new int[2];
args[3] = new int[2];
args[0][0] = 1;
args[0][1] = 1;
args[4][1] = 1;
args[4][2] = 2;
取值:
int age = args[0][0];

4.5.数组的拷贝
使用 System.arraycopy(…);方法完成数组的拷贝。
arraycopy方法有5个参数:
参数1,需要被复制的目标数组
参数2,从这个数组的那个一个位置开始复制
参数3,需要把数据复制到的另外的那一个新的数组对象
参数4,复制到新数组里面哪个位置(从这个位置开始算)
参数5,复制的目标数组的长度
例:
int myArray[] = { 1, 2, 3, 4, 5, 6 }; //老数组
int[] newArray = new int[myArray.length*2];
System.arraycopy(myArray,0,newArray,0,myArray.length);
这样就把老数组中的数据都复制到了新数组中,放到了新数组的0号位置。以后就使用新数组操作,代码的效果看起来是老数组的长度被加大了。

4.6.可变参数
方法声明的参数是可变参数,表示,后期调用该方法可以传一个或者多个值,但是类型需要正确。
语法: public void show(数据类型… 变量名){
}
注:如果方法的参数有可变参数,那么只能是在方法参数列表的最后。
例:
public void show(String name){

}
调用show方法:
show(“tom”);//√
show(“tom”,”lisi”)//√
show(“tom”,”lisi”,”wangwu”)//√
在show方法中使用可变参数,按照使用数组的方式使用即可。

4.7.格式化输出
System.out.printf是JDK1.5之后加入的新的方法,可以给我们格式化输出内容

常见用法例子:
    // 定义一些变量,用来格式化输出。  
    double d = 345.678;  
    String s = "你好!";  
    int i = 1234;  
    // "%"表示进行格式化输出,"%"之后的内容为格式的定义。 
    // "f"表示格式化输出浮点数。 
    System.out.printf("%f", d); //345.678000
    System.out.println();  
    // "9.2"中的9表示输出的长度,2表示小数点后的位数。 注意输出数字前面			的空格 
    System.out.printf("%9.2f", d);//   345.68
    System.out.println();  
    // "+"表示输出的数带正负号。  
    System.out.printf("%+9.2f", d);//  +345.68
    System.out.println();  
    // "-"表示输出的数左对齐(默认为右对齐)。  
    System.out.printf("%-9.4f", d);//345.6780
    System.out.println();  
    // "+-"表示输出的数带正负号且左对齐。  
    System.out.printf("%+-9.3f", d);//+345.678
    System.out.println();  
    // "d"表示输出十进制整数。
    System.out.printf("%d", i);//1234
    System.out.println();  
    // "o"表示输出八进制整数。 
    System.out.printf("%o", i);//2322
    System.out.println();  
    // "x"表示输出十六进制整数。  
    System.out.printf("%x", i);//4d2
    System.out.println();  
    // "#x"表示输出带有十六进制标志的整数。  
    System.out.printf("%#x", i);//0x4d2
    System.out.println();  
    // "s"表示输出字符串。
    System.out.printf("%s", s);//你好! 
    System.out.println();  
    System.out.printf("输出浮点数:%f,一个整数:%d,字符串:%s", d, i, s);
    //输出浮点数:345.678000,一个整数:1234,字符串:你好!