JAVA数组比较

  不可以用==来比较两个数组的元素值是否相等,== 使用于对象比对时,是用来比对两个对象名称是否引用自同一个对象。范例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);

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值