第八课:引用传递
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】
浙公网安备 33010602011771号