只是小人物

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

    数组的声明和实例化,初始化方式

 1 int[] a = {1,2,3,4};
2 int a[] = {1,2,3,4};//不会报错,不推荐这样写
3 int[] a = new int[4];//4为数组的长度,数组的长度一旦确定就不能改变
4 a = {1,2,3,4}//错误
5 a[0]=1;
6 a[1]=2;
7 a[2]=3;
8 a[3]=4;
9 int[] a = new int[]{1,2,3,4};
10 int[] b = new int[5]{1,2,3,4,5}; //错误
11 String[] ss = {"张三","李四","往五"};


    数组的默认初始化(如果不赋值,则有默认值)

    各个数组的默认值如下

byte,short,int,long : 0
float,double : 0.0f, 0.0
char: '\u0000' //不可见字符
boolean : false
对象 : null

    数组的访问和下标越界

数组的下标(index)是从0开始
例:

1 public static void main(String[] args) {
2 int[] a ; //数组的声明
3 a = new int[2];
4 a[0] = 10;//数组中的元素就是变量
5 a[1] = 20;
6 a[2] = 30;//错误,但是没有红线,运行会错,错误原因数组下标越界
7 }


    数组遍历

    //数组的遍历赋值
  

1       int[] a = new int[5];
2 for(int i=0; i<a.length; i++){ //a.length : 数组的长度属性
3 a[i] = i;
4 }


    数组之间的拷贝System.arraycopy()和直接赋值的区别
     赋值a=b: 复制地址和值
    缺点:相互会影响

    例1:

 1 public class TestArray2 {
2 public static void main(String[] args) {
3 int[] a = {1,2,3,4,5};
4 int[] b = {6,7,8,9,0};
5 a = b; //b的地址赋值给a,b的地址就等于a的地址,所以他们指向的数组对象是同一个
6 //如果需要复制,则需要用System.arraycopy(src, srcPos, dest, destPos, length)
7
8 a[0] = 100; //改变a[0]的值
9 System.out.println("b[0]为" + b[0]); //在这里b[0]由于指向的是a[0]的数组对象,所以b[0]输出的值也是100
10 }
11
12 }



    打印结果:b[0]为100

    如果需要复制且不影响原来的数组,则用
    System.arraycopy(src, srcPos, dest, destPos, length)
    src:从哪个数组里面拷,既源数组
    srcPos:从源数组中的第几个位置开始拷
    dest:目标数组
    destPos:从目标数组第几个位置开始拷贝
    length:要拷多长
    例2:
  

 1   public class TestArraycopy {
2 /**
3 * 打印方法
4 * @param cs
5 */
6 public static void print(char[] cs){
7 for(int i=0; i<cs.length; i++){
8 System.out.print(cs[i] + " ");
9 }
10 }
11
12 public static void main(String[] args) {
13 char[] cs = {'A','B','C','D','E'};
14 char[] cs2 = {'0','0','0','0','0','0','0','0','0'};
15 //cs2 = cs.clone();
16 System.arraycopy(cs, 0, cs2, 0, 4);
17 //从cs的第0个元素开始,到cs2的第0个元素开始,拷4个
18 print(cs2);
19
20 }
21
22 }


    输出结果:A B C D 0 0 0 0 0

posted on 2012-04-08 23:37  只是小人物  阅读(305)  评论(0编辑  收藏  举报