永发信息网

JAVA数组赋值的问题

答案:5  悬赏:40  手机版
解决时间 2021-04-03 03:10
JAVA数组赋值的问题
最佳答案
第一个5没什么说的,第二个25是因为par.objectTestSet(iArray); 时,数组iarray做为一个参数传递进去,然后在函数objectTestSet中,修改了iarray的值! 数组做为参数类似于指针,指向的是数组在内存中的地址,当函数改变传入参数的值的,实际参数的值也发生改变。
全部回答
一个只值传递
一个是引用传递
建议楼主应该了解一下Java的这两个主题:
变量的使用范围
对像的生命周期
结果都是对的阿!
System.out.println("The size is " + size);
这个打印是
public static void main(String []arg){
int size = 5;
这个地方的size = 5;
至于par.primitiveTestSet(size);
这个方法 没有改变size,因为 这个方法中size是一个相当于局部变量了
在这个方法里 size是由变化的,当这个方法返回后传过来的这个size就被系统收回了!但
public static void main(String []arg){
int size = 5;
这个size是不受
par.primitiveTestSet(size);
这个方法改变的!
下面的那个是 数组,他不是基本类型,他给方法传得也不是一个具体的数,而是 引用,就是一个指向iArray这个地方的一个引用!所以以后不关在那里用了这个引用,其实都是改变这个饮用指向的那个地方的数据,
所以
par.objectTestSet(iArray);
这个方法就把
iArray[0]; 的值改变了!
所以JAVA不管什么情况下都是传得值!
这个值,对于基本数据类型 如INT LONG BYTE CHAR等都是 具体的变量数值本身,其他的引用数据类型都是引用!
记住这点你就不会混淆了!
输出的结果完全正确。
之所以你对输出的结果有疑问,是因为你还没有理解java里面的数据类型。在java里面有两类数据,一种是值类型,还有一种是引用类型。向一个函数传值时,都是把
你的传的那个实参的值拷贝一份给形参。
例如有这么一个函数:
//此函数的功能是求两个整数的和
int sum(int a,int b)
{
int sum;
sum=a+b;
retrun sum;
}
当在主函数里面调用这个函数时:(main函数略)
int x=10,y=20;
int z=sum(x,y);//定义变量z来存放x与y的和。
这个过程是这样的。
把x的值(这里是10),y的值(这里是20),各拷贝一份,分别传个sum函数的形式参数a和b,即此时a和b分别的到了两个值,10、20。然后在函数里面定义了一个变量sum,把a、b的值相加,赋个sum,在返回sum的值。那么在函数里面的求和过程是根本涉及不到x、y的。也就是对x、y没有任何影响。因为是把x、y的值copy一份给a和b。
这是对与值类型的。
那么在java里面还有一种数据类型,叫做引用类型。我不知道你学过c语言没有,如果是学过c语言就很容易理解。这里的引用类型和c语言里面的指针类型差不多。
如有下面的函数:
void tt(int [] aa)
{
aa[0]=10;
}
在main函数这样调用:
int [] bb=new int[]{1,2,3,4,5,6};
tt(bb);
System.out.println(bb[0]);
输出结果是10
因为数组类型是引用类型。当我们调用函数tt时,把bb数组的首地址copy一份传给函数的形式参数aa,由于aa这是候拥有数组bb的地址,所以在aa里面做的修改都回体现在bb上。它修改的是内存中bb所在的那个内存中的值。
//下面是完整的测试:
//test2.java
class test2
{
public static void main(String [] args)
{
int [] aa=new int[]{1,2,3,4,5,6};
test2.tt(aa);
System.out.println(aa[0]);

int a=20,b=30;
System.out.println(test2.sum(a,b));
System.out.println("a:"+a+" b:"+b); //检查a、b的值是否改变。
}

public static void tt(int [] aa)
{
aa[0]=10;
}

public static int sum(int x,int y)
{
int sum=x+y;
return sum;
}
}
//讲了这么多不知道你听懂了没有,还没听明白的话就到百度里搜"值类型,引用类型"吧
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我的耳机为什么一会又声音一会没声音的?t台
现代朗动新款自动尊贵型带不带导航
以前做事没能力消极无能行为怕知识不够,别人
It is worth considering what makes “conve
长岭贴吧哪里招聘初中补课老师,初中语文,从
咋骗3800现在19天了 已经逮捕 如果得到被害方
360浏览器 怎么设置小号多开
求一个带弥字的日本男生名字
最好看的男主角腹黑霸道的小说
有首经典的歌,外国的儿童合唱团,给人的感觉
楼上一人算五家,楼下四人算一家,为了算好一
公民依法参与国家政治生活、管理国家事务和社
企业囤积存货,试分析下 占用资金和风险 这两
RVV2*0.5是什么意思
九成新319升的海尔冰柜价格
推荐资讯
淘气用繁体字怎么写
焗了营养油,头皮油油的,用了丝域的毛囊清乳
蜜意浓情之天价甜妻txt
拍散粉会不会看得出上过粉的?
谁知道小米2S原装耳机多少钱
大胆设想一下,几千万年后,地球表面的海陆分布
自学吉他半年,现在很迷茫
构造一个解为x=-3的一元一次方程为
如果没有热妮娅,准尉瓦斯科夫是否就牺牲了?
vivoy11iw怎么进入recovery
x×2x=300,x等于多少
什么东西能用扁扁的形容
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?