本文以及以后的java基础知识随笔中的文章,都是来至网络课堂51CTO学院牛牧老师的《深入浅出之-JavaSE基础教程》的课堂笔记。相关的代码为课堂中出现的和自己写的两部分。
一、引用传递
引用传值:通过引用传递可以改变实参对象的内容,但是不能改变实参对象。
public class House{
String owner;
String room;
House(){}
House(String owner,String room){
this.owner=owner;
this.room=room;
}
public static void changeRoom(House h)//引用传递,值传递,实质是对象的hashCode。
{
h.room="客厅"
System.out.println("changeRoom方法的hashCOde:"+h.hashCode());
}
public void showRoom()
{
SYstem.out.println(this.ower+"的房屋,里面有个漂亮的:"+this.room);
}
public static void main(String[] args){
House h=new House("叫兽易小星","厨房");
h.showRoom();
System.out.println("-------------------");
System.out.println("主方法中的hashCode:"+h.hashCode());
House.changeRoom(h);
h.showRoom();
}
}
二、this关键字
指向当前对象,指调用当前方法的那个对象。一般来说this关键字指当前对象本身,this可以调用构造方法。
this关键字有两种用法:1、指向当前对象;2、调用构造方法:this();放在构造方法的第一句。
House(){
this.ower=ower;
this.room=room;
this.door=door;}
House(String ower,String room){
this();
this.ower=ower;
this.room=room;
}
House(String ower,String room,String door){
this(ower,room);
this.door=door;
}
三、设计实例
设计学生类,设计图书馆类,学生的成员方法中传递图书的引用。
class Books
{
String name;
String auther;
String press;
String lender;
Boocks(String name,String auther,String press)
{
this.name=name;
this.auther=auther;
this.press=press;
this.lender="李白清";
}
public void showInfo()
{
System.out.println("书名:"+this.name+" ,借书人是:"+this.lender);
}
}
class Students
{
String sid;
String name;
int age;
Students(String sid,String name ,int age)
{
this.sid=sid;
this.name=name;
this.age=age;
}
public void lendBook(Books book)
{
book.lender=this.name;
//以下是新建对象,不是引用传递;
/*
*book=new Books("我所了解的生活","韩寒","浙江文艺出版社");
*book.lender=this.name;
*新建了一个对象,并把借书人的name付给它,但是并不改变实参对象b本身。
*/
}
public static void main(String[] args)
{
Books b=new Books("java编程思想","侯敏","电子工业出版社");
Student s=new Student("9527","周猩猩","21");
s.lendBook(b);
b.showInfo();
}
}