数组Array

  对象数组和基本类型数组在使用上几乎是一致的,唯一的区别是对象数组保存的是对象引用,

基本类型数组直接保存基本类型的值。

  新生成一个数组时,会初始化,如果是对象数组,则被初始化为null;如果是基本类型数组,数值型

被初始化为0,Char类型被初始化为空,布尔类型被初始化为false。

  

package chapter16;

class A{

}
public class arr1 {
    public static void main(String[] args) {
        int[] is=new int[5];
        for (int i:is){
            System.out.println(i);
        }
        char[] cs=new char[5];
        for (char c:cs){
            System.out.println(c);
        }
        boolean[] bs=new boolean[5];
        for (boolean b:bs){
            System.out.println(b);
        }
        A[] as=new A[5];
        for (A a:as){
            System.out.println(a);
        }
    }
}
输出结果:

  

0
0
0
0
0
 
 
 
 
 
false
false
false
false
false
null
null
null
null
null
创建多维数组:

  对于基本类型的数组,可以使用花括号将每个向量分隔开。

package chapter16;

import java.lang.reflect.Array;
import java.util.Arrays;

class A{

}
public class arr1 {
    public static void main(String[] args) {
        int[][] is={{1,2,3},{4,5,6}};
        System.out.println(Arrays.deepToString(is));


    }
}
输出结果:

[[1, 2, 3], [4, 5, 6]]
  还可以使用new来分配数组。

package chapter16;

import java.lang.reflect.Array;
import java.util.Arrays;

class A{

}
public class arr1 {
    public static void main(String[] args) {
        int[][] is=new int[2][3];
        System.out.println(Arrays.deepToString(is));


    }
}
输出结果:

[[0, 0, 0], [0, 0, 0]]
java数组进行拷贝复制的几种方式:

package chapter16;

import java.lang.reflect.Array;
import java.util.Arrays;

class A{

}
public class arr1 {
    public static void main(String[] args) {
        //直接赋值
        int[] i={1,2,3};
        int[] j=i;
        System.out.println(Arrays.toString(i));
        System.out.println(Arrays.toString(j));
        System.out.println(i);
        System.out.println(j);
        System.out.println(i==j);
        //使用for循环
        int[] k={1,2,3};
        int[] l=k.clone();
        System.out.println(Arrays.toString(k));
        System.out.println(Arrays.toString(l));
        System.out.println(k);
        System.out.println(l);
        System.out.println(k==l);
        //利用Arrays自带的copyof
        int[] m={1,2,3};
        int[] n=m.clone();
        System.out.println(Arrays.toString(m));
        System.out.println(Arrays.toString(n));
        System.out.println(m);
        System.out.println(n);
        System.out.println(m==n);
        //System.arraycopy
        int[] o={1,2,3};
        int[] p=new int[5];
        System.arraycopy(o,0,p,0,o.length);
        System.out.println(Arrays.toString(o));
        System.out.println(Arrays.toString(p));
        System.out.println(o);
        System.out.println(p);
        System.out.println(o==p);


    }
}
输出结果:

[1, 2, 3]
[1, 2, 3]
[I@1540e19d
[I@1540e19d
true
[1, 2, 3]
[1, 2, 3]
[I@677327b6
[I@14ae5a5
false
[1, 2, 3]
[1, 2, 3]
[I@7f31245a
[I@6d6f6e28
false
[1, 2, 3]
[1, 2, 3, 0, 0]
[I@135fbaa4
[I@45ee12a7
false
可以看到,第一种,两个数组的地址是一样的,也就是说如果其中一个数组发生改变,另一个数组对应的值也会改变;其他三种两个数组地址都不相等,也就是说创建了新的数组。
Arrays.equals  比较的是对应位置的元素是否相等
package chapter16;

import java.lang.reflect.Array;
import java.util.Arrays;

class A{

}
public class arr1 {
    public static void main(String[] args) {
        //直接赋值
        int[] i={1,2,3};
        int[] j=i;
        i[0]=0;
        System.out.println(Arrays.toString(i));
        System.out.println(Arrays.toString(j));
        System.out.println(Arrays.equals(i,j));
        //使用for循环
        int[] k={1,2,3};
        int[] l=k.clone();
        System.out.println(Arrays.toString(k));
        System.out.println(Arrays.toString(l));
        System.out.println(Arrays.equals(i,j));
        //利用Arrays自带的copyof
        int[] m={1,2,3};
        int[] n=m.clone();
        System.out.println(Arrays.toString(m));
        System.out.println(Arrays.toString(n));
        System.out.println(Arrays.equals(m,n));
        //System.arraycopy
        int[] o={1,2,3};
        int[] p=new int[5];
        System.arraycopy(o,0,p,0,o.length);
        System.out.println(Arrays.toString(o));
        System.out.println(Arrays.toString(p));
        System.out.println(Arrays.equals(o,p));


    }
}
结果:

[0, 2, 3]
[0, 2, 3]
true
[1, 2, 3]
[1, 2, 3]
true
[1, 2, 3]
[1, 2, 3]
true
[1, 2, 3]
[1, 2, 3, 0, 0]
false







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值