• 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是一个特殊的类,其内容不可改变。


  • 相关阅读:
    C#中的委托和事件(续)【来自张子扬】
    C# 中的委托和事件[转自张子扬]
    .NET多线程编程入门
    python——configparser模块
    logger模块
    python——time模块
    os模块
    python——re模块
    selenium环境搭建
    iOS中的三大定时器
  • 原文地址:https://www.cnblogs.com/timssd/p/4790449.html
Copyright © 2020-2023  润新知