java学习笔记15--引用传递

java学习笔记15--引用传递

范例一

  1. class Demo{  
  2.     public int temp = 30;  
  3. }  
  4. public class T {  
  5.   
  6.     public static void main(String[] args) {  
  7.         // TODO Auto-generated method stub  
  8.         Demo d1 = new Demo();  
  9.         d1.temp = 50;  
  10.         System.out.println("fun()方法调用之前:"+d1.temp);  
  11.         fun(d1);  
  12.         System.out.println("fun()方法调用之后:"+d1.temp);  
  13.     }  
  14.     public static void fun(Demo d2){  
  15.         d2.temp = 1000;  
  16.     }  
  17. }  


内存分析:

范例二

  1. public class T {  
  2.   
  3.     public static void main(String[] args) {  
  4.         // TODO Auto-generated method stub  
  5.         String str1 = "hello";  
  6.         System.out.println("fun()方法调用之前:"+str1);  
  7.         fun(str1);  
  8.         System.out.println("fun()方法调用之前:"+str1);  
  9.     }  
  10.     public static void fun(String s2){  
  11.         s2 = "MLDN";  
  12.     }  
  13.   
  14. }  


内存分析

范例三

  1. class Demo{  
  2.     String temp = "hello";  
  3. }  
  4. public class T {  
  5.   
  6.     public static void main(String[] args) {  
  7.         // TODO Auto-generated method stub  
  8.         Demo d1 = new Demo();  
  9.         d1.temp = "world";  
  10.         System.out.println("fun()方法调用之前:"+d1.temp);  
  11.         fun(d1);  
  12.         System.out.println("fun()方法调用之后:"+d1.temp);  
  13.     }  
  14.     public static void fun(Demo d2){  
  15.         d2.temp = "MLDN";  
  16.     }  
  17. }  


内存分析

本程序与范例一的流程完全是一样的,范例二是特殊的,因为String是一个特殊的类,其内容不可改变。


原文地址:https://www.cnblogs.com/timssd/p/4790449.html