慎用java的多维数组.doc

慎用java的多维数组.doc

ID:52314948

大小:24.50 KB

页数:2页

时间:2020-03-26

慎用java的多维数组.doc_第1页
慎用java的多维数组.doc_第2页
资源描述:

《慎用java的多维数组.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、慎用java的多维数组前一段时间做的一个项目中,有一处用到了一个多维数组来保护页面的状态。  这个数组所为一个javaBean对象的属性存在,这个javaBean对象被保存在session中,我在修改jsp页面的时候,需要对数组中的一些值做转换。原来代码是这样的:StringinputData=newString[24];inputData=xxxjavaBean.getSendItem();  我在后面修改的时候,改变了inputDate的中的值。结果品质部在测试的时候,发现有一个页面的状态到了第三个页面去,在返回来的时候就无法记录原来的状态。用debug调试,问题处在保存

2、在session中的javaBean对象值被修改了,我找了一个上午都没有找到问题所在,所有可能修改session中值得地方,(.java文件)我都找遍了。后来在看jsp页面的时候,发现了这里有个多维数组,才想起来,java中的数组是引用传递。我在jsp页面上修改的数据,其实修改的是session中的数据。从而造成了这bug的出现。  java中的数据对象,在复制数组的是要注意,有多种方法得到Java数组的值拷贝。  1.可以使用循环,将整个数组的元素值遍历一遍,并指定给另一个数组相对应的索引位置intarr1={1,2,3,4,5};intarr2=newint;for(in

3、ti=0;iarr1.length;i++){arr2[i]=arr1[i];}  2.使用System类提供的arraycopy()方法intarr1={1,2,3,4,5};  3.使用数据的clone方法intarr1={1,2,3,4,5};intarr2=newint;arr2=(int)arr1.clone();对于单维数组这三种方法都是没有问题的,对于多维数组第二第三种方法就会出现问题,到的新数组还是应用传递,而不是值传递,因为java中的克隆是浅层克隆。所以用第二第三种方法的时候,也要以单维的形式进行,才能到达值拷贝的结果。所以:多维情况下:1.intarr1

4、={{1,2,3,4,5},{1,2,3,4,5}};intarr2=newint;for(inti=0;iarr1.length;i++){System.arraycopy(arr1[i],0,arr2[i],0,arr1[i].length);}2.intarr1={{1,2,3,4,5},{1,2,3,4,5}};intarr2=newint;for(inti=0;iarr1.length;i++){arr2[i]=(int)arr1[i].clone();}intarr2=newint;System.arraycopy(arr1,0,arr2,0,arr1.lengt

5、h);

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。