引用传递在java中有重要作用这里 讲解三个范例:
范例一:
class Demo{ int temp=30;//此处为了方便,不封装 }; public class Test{ public static void main(String args[]){ Demo d1=new Demo();//实例化Demo对象,实例化之后temp=30 d1.temp= 50 ;//修改temp属性的内容 System.out.println("fun()方法调用之前:"+d1.temp); fun(d1); System.out.println("fun()方法调用之后:"+d1.temp); } public static void fun(Demo d2){//此处的方法由主方法直接调用 d2.temp = 1000;//修改temp值 } }
内存分析图:
范例二:
public class Test{ public static void main(String args[]){ String str1= "hello" ; System.out.println("fun()方法调用之前: "+str1); fun(str1); System.out.println("fun()方法调用之后: "+str1); } public static void fun(String str2){//此处的方法由主方法直接调用 str2="world";//修改字符串内容 } }
内存分析图:
范例三:
class Demo{ String temp= "hello" ; }; public class Test{ public static void main(String args[]){ Demo d1=new Demo();//实例化Demo对象,实例化后temp="hello" d1.temp="world";//修改temp属性内容 System.out.println("fun()方法调用之前: "+d1.temp); fun(d1); System.out.println("fun()方法调用之后: "+d1.temp); } public static void fun(Demo d2){//此处方法由主方法直接调用 d2.temp="!!!";//修改temp值 } }
内存分析图:
范例一与范例三的流程是完全一样的,第二个范例比较特殊,因为String类是一个特殊的类,其内容是不可改变的。
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-18 12:23:49