java数组之间赋值问题
来源:互联网 发布:网络视频教育平台 编辑:程序博客网 时间:2024/05/05 17:15
问题描述:
今天用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的地址。
0 0
- java数组之间赋值问题
- java数组赋值问题
- java关于数组之间的相互赋值
- java关于数组之间的相互赋值
- java数组的赋值问题
- 字符数组之间赋值
- 数组之间的赋值
- char数组和指针与CString之间的赋值问题
- 关于二维数组地址和指针之间赋值的问题
- 数组赋值问题
- 指针数组赋值问题
- 二维数组赋值问题
- 数组未赋值问题
- Python数组赋值问题
- 动态生成数组,数组之间赋值
- 数组给数组赋值问题
- XMLlistCollection之间的赋值问题
- java数组的赋值
- GCC编译器(2)
- JavaScript闭包运行机制
- android判断当前网络状态
- Android 通知栏
- javamail 收发邮件
- java数组之间赋值问题
- 【Java多线程】-ReentrantLock
- MyBatis学习总结(八)——Mybatis3.x与Spring4.x整合
- Web缓存大作战:常见问题解答
- Swift第四课 函数
- eclipse常用快捷键
- Android学习笔记之——ListView 的两种适配器ArrayAdapter和SimpleAdapter
- php中empty,isset和array_key_exists的区别和技巧
- C 高效编程忠告(转)