第八课:引用传递

1、通过三个引用传递的范例,进一步巩固对于引用传递的基本应用。

  例1:

class A{
	int x = 10 ;
}
public class Demo{
	public static void main(String args[]){
		A a = new A() ;
		a.x = 30 ;
		fun(a) ;
		System.out.println(a.x) ;
	}
	public static void fun(A temp){
		temp.x = 100 ;
	}
}

  此程序的结果是100,下面来分析内存的操作图:

  例2:

public class Demo{
	public static void main(String args[]){
		String str = "hello" ;
		fun(str) ;
		System.out.println(str) ;
	}
	public static void fun(String temp){
		temp = "world" ;
	}
}

  此程序的运行结果是hello,下面分析内存的操作图:

  例3:

class A{
	String x = "other" ;
}
public class Demo{
	public static void main(String args[]){
		A a = new A() ;
		a.x = "hello" ;
		fun(a) ;
		System.out.println(a.x) ;
	}
	public static void fun(A temp){
		temp.x = "world" ;
	}
}

  此程序的运行结果是world,下面分析内存的操作图:

 

2、一种引用的关系

  要求通过类表示出如下的关系:

    一个人有一本书,一本书属于一个人。

  按照类的划分,本句话可以划分出两个操作类:Person、Book

class Person{
	private String name ;
	private int age ;
	private Book book ;	//一个人有一本书
	public Person(String n, int a){
		this.setName(n) ;
		this.setAge(a) ;
	}
	public void setName(String n){
		name = n ;
	}
	public void setAge(int a){
		age = a ;
	}
	public void setBook(Book b){
		book = b ;
	}
	public String getName(){
		return name ;
	}
	public int getAge(){
		return age ;
	}
	public Book getBook(){
		return book ;
	}
}
class Book{
	private String title ;
	private float price ;
	private Person person ;	//一本书属于一个人
	public Book(String t, float p){
		this.setTitle(t) ;
		this.setPrice(p) ;
	}
	public void setTitle(String t){
		title = t ;
	}
	public void setPrice(float p){
		price = p ;
	}
	public void setPerson(Person per){
		person = per ;
	}
	public String getTitle(){
		return title ;
	}
	public float getPrice(){
		return price ;
	}
	public Person getPerson(){
		return person ;
	}
}
public class Demo{
	public static void main(String args[]){
		Person per = new Person("张三",30) ;
		Book bk = new Book("Java基础",89.0f) ;
		per.setBook(bk) ;	//一个人有一本书
		bk.setPerson(per) ;	//一本书属于一个人
		System.out.println(per.getBook().getTitle()) ;	//由人找到其所拥有书的名字
		System.out.println(bk.getPerson().getName()) ;	//由书找到人的名字
	}
}

  

 

【2012-01-10】

posted @ 2012-01-10 15:33  M-Stone  阅读(297)  评论(2编辑  收藏  举报