JAVA引用传递

来源:互联网 发布:圣甲虫长板淘宝 编辑:程序博客网 时间:2024/05/21 06:47

一。Str字符串不能更改,先定义类

例子(1

class Demo{int temp = 30;}public class csdnTest14{public static void main(String args[]){Demo d1 = new Demo();d1.temp = 50;System.out.println("fun()调用之前:"+ d1.temp); //输出50fun(d1);System.out.println("fun()调用之后:"+ d1.temp);  //输出1000}public static void fun (Demo d2){d2.temp=1000;//修改temp值}}

例子(2

public class csdnTest15{public static void main(String args[]){String str1 = "hello";System.out.println("fun()调用之前"+str1);fun(str1)System.out.println("fun()调用之后"+str1);}public static void fun (String str2){str= "Hello"//尝试修改字符串内容,修改不能}}

例子(3

class Demo{String temp = "hello";}public class csdnTest16{public static void main(String args[]){Demo d1 = new Demo();d1.temp = "world";System.out.println("fun()调用之前:"+ d1.temp);fun(d1);System.out.println("fun()调用之后:"+ d1.temp);  //}public static void fun (Demo d2){d2.temp="Fang";//修改temp值,修改可以}}
二。接受本类引用

class Demo{//定义Demo类private int temp =30;//声明temp属性并封装public void fun(Demo d2){//直接通过对象调用本类的私有属性d2.temp=50;}public int getTemp(){return temp;}public void setTemp(int t){temp=t;}}public class csdnTest17{public static void main(String args[]){Demo d1 = new Demo();//d1.setTemp(50);//通过setter改变值d1.fun(d1);//把Demo对象传回到自己类中System.out.println("temp="+d1.getTemp());}}

三。实例分析一对一关系

内容:一本书属于一个人,人也属于一本书,人是具体的类,书也是具体的类,使用引用传递表示

class Person{private String name;private int age;private Book book; //一个人有一本书public Person(String name,int age){this.setName(name);this.setAge(age);}public void setName(String n){name= n;}public void setAge(int a){age =a;}public String getName(){return name;}public int getAge(){return age;}public Book getBook(){return book;}public void setBook(Book b){book = b;}};class Book{private String title;private float price;private Person person;//一本书属于一个人public Book(String title,float price){this.setTitle(title);this.setPrice(price);}public void setTitle(String t){title = t;}public void setPrice(float p){price =p; }public String getTitle(){return title;}public float getPrice(){return price;}public void setPerson(Person p){person = p;}public Person getPerson(){return person;}};public class csdnTest18{public static void main(String arg[]){Person per=  new Person("张三",30);Book bk = new Book("Java learning",90.0f);per.setBook(bk);bk.setPerson(per);System.out.println("从人找到书 --> 姓名:" + per.getName()+";年龄:" + per.getAge() +";书名:" + per.getBook().getTitle() + ";价格:" + per.getBook().getPrice()) ;// 可以通过人找到书System.out.println("从书找到人 --> 书名:" + bk.getTitle() + ";价格:"+ bk.getPrice() + ";姓名:" + bk.getPerson().getName() + ";年龄:"+ bk.getPerson().getAge()) ;// 也可以通过书找到其所有人}}


四。简要修改以上代码,加入 孩子的类(修改Person类,在类中增加引用)

class Person{// 定义Person类private String name ;// 姓名private int age ;// 年龄private Book book ;// 一个人有一本书public Person(String name,int age){this.setName(name) ;this.setAge(age) ;}public void setName(String n){name = n ;}public void setAge(int a){age = a ;}public String getName(){return name ;}public int getAge(){return age ;}public void setBook(Book b){book = b ;}public Book getBook(){return book ;}};class Book{// 定义Book类private String title ;// 标题private float price ;// 价格private Person person ;// 一本书属于一个人public Book(String title,float price){this.setTitle(title) ;this.setPrice(price) ;}public void setTitle(String t){title = t ;}public void setPrice(float p){price = p ;}public String getTitle(){return title ;}public float getPrice(){return price ;}public void setPerson(Person p){person = p ;}public Person getPerson(){return person ;}};public class RefDemo05{public static void main(String arg[]){Person per = new Person("张三",30) ;Book bk = new Book("JAVA SE核心开发",90.0f) ;per.setBook(bk) ;// 设置两个对象间的关系,一个人有一本书bk.setPerson(per) ;// 设置两个对象间的关系,一本书属于一个人System.out.println("从人找到书 --> 姓名:" + per.getName()+";年龄:" + per.getAge() +";书名:" + per.getBook().getTitle() + ";价格:" + per.getBook().getPrice()) ;// 可以通过人找到书System.out.println("从书找到人 --> 书名:" + bk.getTitle() + ";价格:"+ bk.getPrice() + ";姓名:" + bk.getPerson().getName() + ";年龄:"+ bk.getPerson().getAge()) ;// 也可以通过书找到其所有人System.out.println(per.getName() + "的孩子 --> 姓名:"+ per.getChild().getName() + ";年龄:" + per.getChild().getAge()+ ";书名:" + per.getChild().getBook().getTitle() + ";价格:"+ per.getChild().getBook().getPrice()) ;  //通过人找到孩子信息}};


0 0