JAVA数组比较

来源:互联网 发布:百度api 省市区数据库 编辑:程序博客网 时间:2024/05/17 22:10
 不可以用==来比较两个数组的元素值是否相等,== 使用于对象比对时,是用来比对两个对象名称是否引用自同一个对象。范例5-10是这个概念的实例示范。

 

程序清单5-10:TestArrayValue.java

public class TestArrayValue {

    public static void main(String[] args) {

        int[] arr1 = {1, 2, 3, 4, 5};

        int[] arr2 = {1, 2, 3, 4, 5};

 

        int[] tmp = arr1;

 

     System.out.println(arr1 == arr2);

        System.out.println(arr1 == tmp);

        System.out.println(arr2 == tmp);

    }   

}

 

在范例5-10中,虽然arr1与arr2中的元素值是相同的,arr1 == arr2并非比较arr1和arr2数组元素值,而是引用的比较,比较arr1和arr2是否指向的是内存中同一个位置。但实际上arr1与arr2是引用自不同的两个数组对象, arr1== arr2布尔表达式的值为false。将arr1指定给tmp来引用,由于tmp与arr1是引用同一数组对象,所以进行==比较时会显示true;而tmp与arr2是引用自不同数组对象,所以进行==比较时会显示false。执行结果如下:false

                                                                     true

                                                                     false

进行数组复制的另一种方法是使用System类提供的arraycopy()方法。其语法如下:

    System.arraycopy(来源, 起始索引, 目的, 起始索引, 复制长度);

修改范例5-9,使用

System.arraycopy(array1, 0, array3, 0, array1.length);

替换掉原有的相应代码,实现数组的复制。测试程序,保证程序的运行结果与原来一致。

原创粉丝点击