Home > Java > Java 的引用传递

Java 的引用传递

下面一道题,是关于 Java 的引用传递的问题。

package org.leeing.mem;

class StringBean{
	String  str = "hello";
}

class IntBean{
	int intVal = 100;
}
public class RefDemo02 {
	public static void main(String[]args){

		StringBean strbean = new StringBean();
		strbean.str = "world";

		IntBean intbean = new IntBean();

		intbean.intVal = 33;
		String strname = "strname not Changed";

		change(strbean);
		change(intbean);
		change(strname);

		System.out.println(strbean.str); // 输出 "strbean changed"
		System.out.println(intbean.intVal);// 输出 999
		System.out.println(strname); // 输出 "strname not Changed"

	}

	public static void change(StringBean temp){
		temp.str = "strbean changed";
	}

	public static void change(String str){
		str = "leeing";
	}

	public static void change(IntBean temp){
		temp.intVal = 999;

	}
}

输出是:

strbean changed
999
strname not Changed

可以看到 String 是不可变对象,而IntBean和StringBean则通过引用改变了内部变量的值,此处对int和String的改变原理是相同的。

Related posts:

  1. Java 多线程:捕捉线程中逃逸的异常
  2. Java 的构造方法
  3. 对称矩阵
  4. 蛇形矩阵
  5. 三角螺旋矩阵
Categories: Java Tags:
  1. No comments yet.
  1. No trackbacks yet.