00011.9变量的分类(成员变量,局部变量、类变量、实例变量、局部变量)

一、变量的分类

在这里插入图片描述

1、成员变量

(1)、类变量,静态的成员变量
(2)、实例变量:非静态的成员变量

2、局部变量

二、详细说明

他们之间有什么不同呢?

1、声明的位置不同

(1)、成员变量声明在
类中 方法外
(2)、局部变量声明在 类中方法中?准确的说是
方法() 中的形参列表
方法体{}中的局部变量

2、在内存中存储的位置不同

(1)、成员变量
类变量:方法区
实例变量:堆
(2)、局部变量

虚拟机栈:非native方法的局部变量
本地方法栈:native方法的局部变量

3、修饰符不同

(1)成员变量
4中权限修饰符+static 或者final
(2)局部变量
只有final

4、生命周期

(1)成员变量:
类变量:
随着类的加载而分配空间,随着类的卸载而消亡
每一个对象是共享的
实例变量:
随着对象的创建而分配空间,随着对象被垃圾回收而回收
每一个对象是独立的
(2)局部变量
方法调用时,在栈中分配空间,在方法调用结束就消亡

5、作用域

(1)成员变量:可以说没有作用域
类变量:
在本类中随便用,在其它类中用“类名.”或者“对象名.”
实例变量:
在本类中除了静态成员中不能使用,其它随便用,在其它类中只能用“对象.”
(2)局部变量
有作用域,超过作用域就不能使用了
在这里插入图片描述

代码方面得到实际区别,如下所示:

package com.atguigu.test08;

public class TestVariable {
	static int num;	//成员变量,也是类变量
	int a;	//成员变量,也是实例变量
	{
		int a;//局部变量   代码块
	}
	public static void main(String[] args) {
		
	}
}

test类(外部测试调用类)

package com.atguigu.test08;
import com.atguigu.test08.TestVariable;;
public class test {
	public static void main(String[] args) {
		TestVariable t=new TestVariable();
		int testNum=TestVariable.num;
		//TestVariable.a//点不出来,会报错
		int testA=t.a;
		int testA2=t.num;
	}
	
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值