Java局部变量与成员变量的区别

局部变量与成员变量:

借助以下代码引入题目:

class practice{
	public static void main(String[] arge){
		Plane p1=new Plane("波音747",4.5f,120);
		
		int i = 0;
		for(i = 0;i<3;i++){
			p1.fly();
		}
	}
}

class Plane{
	private String model;//型号
	private float length;//机身长度
	private int zaiKeLiang;
	
	public Plane(String model,float length,int zaiKeLing){
	    this.model = model;
	    this.length = length;
	    this.zaiKeLiang = zaiKeLiang;
	}
	public void fly(){
		int x = 1;
		System.out.println(model+"我在飞!第"+x+"圈");
	}
}

以上代码中局部变量有i,x,p1。成员变量有model,length,zaiKeLiang

局部变量:定义于方法中的变量
成员变量:定义于类中的变量

main在格式上也同样为方法,只不过它为程序的入口方法。所以其中定义的变量也为局部变量。可能由人疑惑p1为啥也为局部变量。拿一个例子说明一下吧。应该都记得数组的创建结构吧。

int[] intArray = new int[10];
//对比一下对象的创建格式
Plane p1 = new plane();

从格式上对象的创建与数组就有相像之处,可以说明对象为一种特殊的变量,它能装下方法与其他变量。
从存储方法上,局部变量存储于栈中,成员变量存储于堆中。
在这里插入图片描述
在栈中,每次调用方法时,都会在栈中单独提供出一部分存储空间来供给方法使用,在调用完毕(方法代码执行完毕。main方法也一样)之后会随之清除。
当new出来的对象存储空间(上述p1),在没有对象(栈中无引用的时候)引用时会被清空(包括成员变量)。

一般回收顺序是:

  1. 栈中方法调用完毕后存储空间回收。
  2. 局部变量删除,导致引用类型变量(对象)被清空。
  3. 对象存储空间无引用对象后被java虚拟机(jvm)清除。

有关变量初始化:
局部变量必须初始化数据。
成员变量无需初始化仅声明即可,初始化数据默认为0。(引用类型为null,基本类型为0或0代表的字符)

总结上述知识点得:
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值