JAVA的参数传递总是传"值",但是传值方式也分为两种方式,它们是靠传递参数的类型区分的。这两种类型分别为JAVA的基础类型和Object(对象)类型;基础类型包括boolean,byte,short,char,int,long,float,double,而Object就是对象,如数组.在参数为基础类型时,见代码:
public class A{
public static void main(String arg[]){
int a=3
method1(a)
System.out.println(a)
}
public static void method1(int a){
a=4
}
}
此时结果的输出将是1,而且只要你的值在Main函数中没变,a的值不管怎么传都不回变,这是因为a是传值,而这个"值"是a的一个拷贝,a的值在传递后的改变只是改变了a的拷贝的内容,并没有改变真正的a的值;对于参数为对象
public class A{ public class A{
public static void main(String arg[]){public static void main(String arg[]){
int[] a=new int[1] int[] a=new int[1]
a[0]=3 a[0]=3
method1(a) method1(a)
System.out.println(a[0]) System.out.println(a[0])
} }
public static void method1(int[] a){ public static void method1(int[] a){
a[0]-- a=new int[0]
} a[0]=4
}}
}
左边的结果将是2,右边的结果将是3(未变),原因是:在传递的参数为对象时,这个传递的"值"中放的内容实际上是对向所在的地址,左边的情况是指针定位到对象的地址后,在上面把内容给改了,所以数组的值后会改变,而右边的情况为给对象新分配了一个指针到新的地址上面去,所以所有的操作都在新的地址上面,并不会影响原来的值。注:对于String,Interger,Boolean,Double等的系统对象,它们虽然是Object,但是任何方式的传递参数的值得改变并不会影响原来的值。
这个吗,就像我们数学里面的函数那样,在java里面叫做方法,比如:像数学里面的y=f(x),这个里面的x就是参数,当然这个参数 也可以是多个的,比如:m=f(x,y,z,.....),不过=号左边的就只有1个。到java里面,就是每个方法括号里面的变量就是参数 ,参数不一定非要是变量,也可以是常量。希望我说的对你学习java有所帮助