《Head First Java》20201001读书笔记

P258-P265

《Head First Java》20201001读书笔记

对象的生命周期

对象的生命周期要看引用变量的生命周期。

public class TestLifeOne{
	public void read(){
		int a = 42;//s的范围只限于read()里面,到处无法使用
		sleep();
	}

	public void sleep(){
		s = 7;//非法使用
	}
}
  1. 局部变量只会存活在声明该变量的方法中
public void read(){
	int s = 42;
	//'s'只能用在此方法中
	//当方法结束时
	//s会完全消失

变量s只能用在read()方法中。
换句话说,此变量的范围只会在所属方法的范围内。
其余的程序代码完全见不到s。

  1. 实例变量的寿命与对象相同。如果对象还活着,则实例变量也会是活的。
public class Life{
	int size;

	public void setSize(int s){
		size = s;
		//'s'会在方法结束时消失
		//但size在类中到处都有
	}

此时s变量(这次是方法的参数)的范围,同样也只限制在所属的setSize()这个方法中。

“life”与“scope”的差别

Life
只要变量的堆栈块还存在于堆栈上,局部变量就算活着。
也就是说,活到方法执行完毕为止。
Scope
局部变量的范围只限于声明它的方法之内。
当此方法调用别的方法时,该变量还活着,但不在目前的范围内。
执行其他方法完毕返回时,范围也就跟着回来。

public void doStuff(){
	boolean b = true;
}

public void go(int x){
	int z = x + 24;
	crazy();
	//更多代码
}

public void crazy(){
	char c = 'a';
}

引用变量

引用变量的规则与primitive主数据类型相同。
引用变量只能在处于它的范围中才能被引用。
也就是说,除非引用变量是在它的范围中,不然就不能使用对象的遥控器。
当最后一个引用消失时,对象就会变成可回收。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值