java 参数传递问题

Python013

java 参数传递问题,第1张

Java的参数传递总结:

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有所帮助