本文以及以後的java基礎知識隨筆中的文章,都是來至網絡課堂51CTO學院牛牧老師的《深入淺出之-JavaSE基礎教程》的課堂筆記。相關的代碼爲課堂中出現的和自己寫的兩部分。
網址 http://edu.51cto.com/course/course_id-513.html。
一、引用傳遞
引用傳值:通過引用傳遞可以改變實參對象的內容,但是不能改變實參對象。
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();
}
}