JAVA中的参数传递原则

xiaoxiao2021-02-28  61

JAVA中的参数传递全是以值传递的

总的来说,简单概括Java中进行方法调用的时候传递参数时,遵循值传递的原则: 1)基本数据类型,传递的是数据的拷贝 。“值传递”,在这种方式下,被调用对象对新数据的改变不影响源数据的取值,如基本类型的传递

//例1

void method1(){ int x=0; this.change(x); System.out.println(x); } void int change(int i){ i=1; }

结果:x=0;

2)引用数据类型,传递的是传递的引用地址的拷贝,而不是该对象本身 。被调用对象新数据的改变影响源数据内容,因为新数据和源数据的引用虽然不同但却指向同一数据对象,如类型对象的传递。

void method1(){ StringBuffer x=new StringBuffer("Hello"); this.change(x); System.out.println(x); } void int change(StringBuffer i){ i.append(" world!"); }

结果:x=Hello world;

String是一个比较特殊的数据类型,在Java中,String是一个类,但是他的传值却是采用“值传递”的方式。 首先String不属于8种基本数据类型,String是一个对象。

 

 

3.深刻理解引用传递

package AsbstractFactory; public class Test { public static void change(StringBuffer i) { //i值这时和x一样,都指向同一个对象 System.out.println("i值这时和x一样,都指向同一个对象---"+i); //i和x指向的那个对象值发生变化 i.append(" world!"); System.out.println("i和x指向的那个对象值发生变化--"+i); //i指向的地方和x不在一样 i=null将i这个引用指向了内存中一个空地址(没任何东西,null) i=null; System.out.println(i); //在堆内存中建新的对象,指向i指向这个新地址 i=new StringBuffer("i指向新的对象"); System.out.println(i); } public static void main(String[] args) { StringBuffer x = new StringBuffer("Hello"); change(x);//引用数据类型,传递的是传递的引用地址的拷贝 System.out.println("输出的还是x指向对象的值----"+x);//输出的还是x指向对象的值,x应用对象的值被改变了一次 } } 结果: i值这时和x一样,都指向同一个对象---Hello i和x指向的那个对象值发生变化--Hello world! null i指向新的对象 输出的还是x指向对象的值----Hello world!

 

转载请注明原文地址: https://www.6miu.com/read-70937.html

最新回复(0)