Java两个数组间赋值的问题

publicclassDeleteElements{publicstaticvoidmain(String[]args){int[]array={1,2,3,4,5};i... public class DeleteElements {
public static void main(String[] args){
int[] array = {1, 2, 3, 4, 5};
int[] src = new int[3];
src = array;
for(int i = 0; i < src.length; i++){
System.out.println(src[i]);
}
}

}
如上,输出的是1,2,3,4,5.难道没有自动截断或者报错吗?!
展开
 我来答
Forrest_brm
推荐于2016-07-19 · TA获得超过327个赞
知道小有建树答主
回答量:217
采纳率:100%
帮助的人:251万
展开全部
这个问题的关键在于传值还是传引用的问题。
在java中 “=” 传递的是对之后的对象的 引用,而不是它的值的另一个“版本”
比如Object a=b;
....// 一系列对a的操作,实际上是对b的操作。
这说明实际上是让a指向了b在内存中的地址。(如果是原生类型就是栈中的地址,如果是其他类型,就是堆中的地址)。
你也可以改下代码
增加2行
src[0] = 0;// 我修改改缺src的第搭掘一个元素
System.out.println(array[0]);// 实际上修改的是array的知歼核第一个元素。
这就是传引用。直接指向被引用对象的地址。
江湖人称王嘉嘉
2015-08-03 · TA获得超过1400个赞
知道小有建树答主
回答量:1047
采纳率:83%
帮助的人:620万
展开全部
因为array,src实际上都是指针,你虽然int[] src = new int[3];
但是后面执行了兆山src = array;
src就指向了array的内存区域,所族兆中猜高以长度就变成了5,内容就是1,2,3,4,5.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2015-08-03
展开全部
自认为那个src=array本身两个对唤老象都是地址,所以赋值做得是引用,将src指向到了array的地址上,所以之前腔中src的三个空间会被释伍链山放.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式