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】