范例一

class Demo{
public int temp = 30;
}
public class T { public static void main(String[] args) {
// TODO Auto-generated method stub
Demo d1 = new Demo();
d1.temp = 50;
System.out.println("fun()方法调用之前:"+d1.temp);
fun(d1);
System.out.println("fun()方法调用之后:"+d1.temp);
}
public static void fun(Demo d2){
d2.temp = 1000;
}
}

内存分析

Java学习笔记15--引用传递-LMLPHP

范例二

public class T {

    public static void main(String[] args) {
// TODO Auto-generated method stub
String str1 = "hello";
System.out.println("fun()方法调用之前:"+str1);
fun(str1);
System.out.println("fun()方法调用之前:"+str1);
}
public static void fun(String s2){
s2 = "MLDN";
}
}

内存分析

Java学习笔记15--引用传递-LMLPHP

范例三

class Demo{
String temp = "hello";
}
public class T { public static void main(String[] args) {
// TODO Auto-generated method stub
Demo d1 = new Demo();
d1.temp = "world";
System.out.println("fun()方法调用之前:"+d1.temp);
fun(d1);
System.out.println("fun()方法调用之后:"+d1.temp);
}
public static void fun(Demo d2){
d2.temp = "MLDN";
}
}

内存分析

Java学习笔记15--引用传递-LMLPHP

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


版权声明:本文采用BY-NC-SA协议进行授权,转载麦田技术博客的文章请注明出处

原文地址:http://itmyhome.com/2015/03/java-study-notes-passed-by-reference

05-11 14:48