java数组之间赋值问题

问题描述:

今天用java数组实现线性表的时候,数组之间赋值出了问题,代码如下:

public class lianbiao {
    public static void main(String[] args) {
        int[] data=new int[50];
        int len=0;
        //System.out.println(data);
        len=data_insert(data,len,len+1,101);
        len=data_insert(data,len,len+1,102);
        len=data_insert(data,len,len+1,103);
        data_output(data,len);
        len=data_delete(data,len,1);
        System.out.println("删除后的表中值为:");
        data_output(data,len);
    }

    private static int data_delete(int[] data, int len, int i) {
        int[] data2=new int[50];
        int index=0;
        i--;
        for(int j=0;j<len;j++){
            if(j!=i){
                data2[index]=data[j];
                index++;
            }
        }
        //data=data2;
        System.arraycopy(data2, 0, data, 0, len);
        len--;
        //System.out.println("shuz"+data);
        return len;
    }

    private static void data_output(int[] data, int len) {
        System.out.print("表中数据为:");
        for(int i=0;i<len;i++){
            System.out.print(data[i]+" ");
        }
        System.out.println();
        //System.out.println(data);
    }

    private static int data_insert(int[] data, int len, int i, int j) {
        data[len]=j;
        len++;
        return len;
    }

}

本来在data_delete函数体中使用的是两个数组“data=data2;”,直接将data2数组的值赋给了data,结果在main函数中,data输出的值并不是data2中的值。然后我就怀疑是引用出的问题,java中并没有指针这一说法,数组传递时直接就是引用的形式,按理说data中值应该改变啊?

于是我就加入了输出语句将data和data2的值输出,发现在data_delete中data=data2后,data的地址为data2的地址,但是主函数中地址并没有变!!!问题所在啊!

后在查询API,发现可以用“System.arraycopy(data2, 0, data, 0, len);”的方式赋值。。。。。。,使用这种方式赋值,并不会改变data的地址。

  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值