JAVA用一个数组引用另一个数组的后面的部分

我已经定义了int数组a1[8];inta2[]=newint[8];如果我让a2=a1;那么a2数组的值改变a1数组对应的值也会改变;这个类似于C++的引用;inta3... 我已经定义了int数组a1[8];
int a2[] = new int[8];
如果我让 a2 = a1; 那么a2数组的值改变a1数组对应的值也会改变;这个类似于C++的引用;
int a3[] = new int[4];
现在我想让a3中的4个数分别为a1数组的后四个数的引用;也就是a3[0]改变 对应a1[4]改变,C++中用指针 引用都能实现 我想知道JAVA有没有方法可以实现?
展开
 我来答
_生手不烦
2012-09-21 · 超过13用户采纳过TA的回答
知道答主
回答量:32
采纳率:0%
帮助的人:25.4万
展开全部
可以用这个方法:System.arraycopy(src, srcPos, dest, destPos, length);
src - 源数组。
srcPos - 源数组中的起始位置。
dest - 目标数组。
destPos - 目标数据中的起始位置。
length - 要复制的数组元素的数量。
具体楼主可以参照下API,看看代码是不是你想要的结果

public class ArrayTest {
public static void main(String[] args) {
int a1[] = new int[8];
for (int i = 0; i < a1.length; i++) {
a1[i] = i;
}
int a2[] = a1;
for (int i = 0; i < a2.length; i++) {
// System.out.println("a2: " + a2[i] + ", ");
}
int a3[] = new int[4];
System.arraycopy(a2, 4, a3, 0, 4);
for (int i = 0; i < a3.length; i++) {
System.out.println("a3: " + a3[i] + ", ");
}
}
}
百度网友9308069
2012-09-21 · TA获得超过1万个赞
知道大有可为答主
回答量:3947
采纳率:89%
帮助的人:1930万
展开全部
java这种改变需要把int的值型(基础型)变成class类的型。封装一下
class MutableInteger{
public int value;
}
MutableInteger a[]=new MutableInteger[8]
就可以实现2个数组中操作同一个或同一批对象。
==========
或者你例子这种情况。a3[]中恒定偏移+4个值,简单处理一下,写个静态方法
static public int a3(int a1, int i){ return a1[i+4]; }
调用时a3(a1,0) //获得a1[4];
不用另花内存。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
havsb
2012-09-21 · TA获得超过130个赞
知道答主
回答量:97
采纳率:0%
帮助的人:57.2万
展开全部
用这个方法:System.arraycopy(src, srcPos, dest, destPos, length);
src - 源数组。
srcPos - 源数组中的起始位置。
dest - 目标数组。
destPos - 目标数据中的起始位置。
length - 要复制的数组元素的数量。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
BUG集散地
2012-09-21 · TA获得超过1317个赞
知道小有建树答主
回答量:625
采纳率:80%
帮助的人:288万
展开全部
确实不懂..弄了好久也没弄明白..同问..
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wo940080073
2012-09-21 · TA获得超过100个赞
知道小有建树答主
回答量:121
采纳率:0%
帮助的人:79.1万
展开全部
这个情况要自己手动改变了吧。。。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式