java 引用传递 关键字,Java基础知识——引用传递、this关键字

本文以及以后的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();

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值