成员变量与局部变量的区别,实例变量与静态变量的区别

成员变量被分为静态变量和实例变量两种,简单来说,定义成员变量时没有 static 修饰符的就是实例变量,反之,有static修饰符的就是静态变量,在构造方法执行时,成员变量被赋值。
而什么是局部变量呢?局部变量就是在一个方法内或一个代码块内有效的变量,出了这个方法或代码块就失效了的变量。
接下来谈谈具体的。

  • 什么时候成员变量声明为实例变量?
  • 所有对象都有这个属性,但是这个属性会随着对象的变化而变化
    ——————————————————————————
  • 什么时候成员变量声明为静态变量?
  • 所有对象都有这个属性,但是这个属性不随着对象的变化而变化

同时,静态变量是在类加载的时候初始化,不需要创建对象,内存就在方法区内被开辟了,方法区内主要存储已被虚拟机加载的类信息、常量、静态变量。静态变量通过“类名.”的方式访问,虽然也可以通过“引用.”的方式访问,但当引用是个空指针时依旧可以访问,因为访问静态变量与引用压根没关系。
其中, 静态变量从该类的准备阶段起开始存在,直到系统完全销毁这个类,类变量的作用域与这个类的生存范围相同;而实例变量则从该类的实例被创建起开始存在,知道系统完全销毁这个实例,实例变量的作用域与对应实例的生存范围相同。
当然,对于成员变量来说,如果没有手动赋值,系统会自动分配默认值。这里列举各类型的默认值如下。
byte、short、int、long------>0
float、double------>0
boolean------>false
char------>‘\u0000’(空字符)
String、引用数据类型------>null
String是Java写好的一个类型,也是在堆中存储的,不用new也会创建出对象。
顺便提一下内存存储机制,局部变量是存储在栈中的,而这个局部变量如果是基本数据类型,就不必再多说了,如果是引用数据类型,那么栈中存储的就是在堆内存中开辟的实例的地址,用C++的话来说就像是指针嘛。而对于实例而言,他的实例变量存储在他所对应的这个堆内存之中。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值