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有没有方法可以实现? 展开
int a2[] = new int[8];
如果我让 a2 = a1; 那么a2数组的值改变a1数组对应的值也会改变;这个类似于C++的引用;
int a3[] = new int[4];
现在我想让a3中的4个数分别为a1数组的后四个数的引用;也就是a3[0]改变 对应a1[4]改变,C++中用指针 引用都能实现 我想知道JAVA有没有方法可以实现? 展开
展开全部
可以用这个方法: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] + ", ");
}
}
}
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] + ", ");
}
}
}
展开全部
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];
不用另花内存。
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];
不用另花内存。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用这个方法:System.arraycopy(src, srcPos, dest, destPos, length);
src - 源数组。
srcPos - 源数组中的起始位置。
dest - 目标数组。
destPos - 目标数据中的起始位置。
length - 要复制的数组元素的数量。
src - 源数组。
srcPos - 源数组中的起始位置。
dest - 目标数组。
destPos - 目标数据中的起始位置。
length - 要复制的数组元素的数量。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
确实不懂..弄了好久也没弄明白..同问..
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个情况要自己手动改变了吧。。。。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询