62,621
社区成员
发帖
与我相关
我的任务
分享
public class main1 {
public static void main(String[] args) {
Integer y=1;
testInteger test = new testInteger();
test.testForInteger(y);
System.out.println(y);
}
}
class testInteger{
public Integer testForInteger(Integer x) {
return ++x;
}
}
public static void testForInteger(Integer x) {
x.valueOf(3); // 等价于Integer.valueOf(3); 跟x完全没得关系
System.out.println(x);
}
针对数组画个图解释一下子
如图所示,在调用方法changearray时,将testarray的值0x001 传递给方法changearray的形参array,那么array=0x001,
在后续你对array的操作时,实际上时操作了堆中的内容,操作完后堆中的数组变成了{20,20,20 。。。}, 此时array = 0x001(也就是堆中的{20,20,20。}数组), 那么testarray还是=0x001,也就是你打印的20
public class test {
public static void main(String[] args) {
Integer x = 1;
testForInteger(x);
System.out.println(x);
int[] testarray = {1,1,1,1,1,1};
changearray(testarray);
for(int i = 0; i<testarray.length; i++) {
System.out.println(testarray[i]);
}
}
public static void testForInteger(Integer x) {
x.valueOf(3);
}
public static void changearray(int [] array) {
for(int i =0; i<array.length; i++) {
array[i] = 20;
}
}
}