第八课:引用传递

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 @   M-Stone  阅读(298)  评论(2编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示