废话不多说直接上代码:
public class test {
public static void main(String[] args){
int a=100;
int[] b={1,2,3,4,5};
System.out.println("Before change: "+"a="+a+" "+"b[0]="+b[0]);
change(a);
change(b);
System.out.println("After change: "+"a="+a+" "+"b[0]="+b[0]);
}
public static void change(int a){
a=200;
}
public static void change(int[] b){
b[0]=100;
}
}
输出结果是:
Before change: a=100 b[0]=1
After change: a=100 b[0]=100
int a=100;
int[] b={1,2,3,4,5};
public static void change(int a){
a=200;
}
public static void change(int[] b){
b[0]=100;
}
(1)当我们把函数外的变量a传递给函数参数a,实际上是把10赋值给函数参数a。此时函数外的a与函数内的a值是
一样的,但是他们在栈中的位置不一样,所以不管函数内的a值如何变化都不会影响到函数外的a值。
数内的b的值相同,指向同一个数组对象。当我们在函数内部修改数组的值时,函数内的b的值没有变化,只是函数
内的b改变了他指向的数组对象内的值。因为函数外的b与函数内的b指向同一个对象,所以函数内的b修改了数组的
值也会影响函数外b的数组的值。
(2).String对象标记着final,所以不能改变String对象的值,只能创建新String对象,然后把新
(3).数组是对象。