java中的成员变量和局部变量
博客专区 > LYQ1990 的博客 > 博客详情
java中的成员变量和局部变量
LYQ1990 发表于2年前
java中的成员变量和局部变量
  • 发表于 2年前
  • 阅读 13
  • 收藏 0
  • 点赞 2
  • 评论 0

【腾讯云】买域名送云解析+SSL证书+建站!>>>   

  静态变量可以用来计数。
【注意:假如 static int a=0,计数到20。但是当服务器重启时,静态变量又会被重新初始化a=0,实际业务不符合】

----------------------

java 中的变量大致分为 成员变量 局部变量 两大类。

一、成员变量:
    在类体里面定义的变量称为成员变量;
    如果该成员变量有 static 关键字修饰,则该成员变量称为 静态变量  类变量
    如果该成员变量没有 static 关键字修饰,则该成员变量被称为 非静态变量  实例变量

1、类变量 (静态变量)
    1 可以向前引用
    2 变量属于类本身
    3 类变量不依赖类的实例,类变量只在初始化时候在栈内存中被分配一次空间,无论类的实例被创建几次,都不再为类变量分配空间
    4 通过类的任意一个实例来访问类变量,底层都将将其转为通过类本身来访问类变量,它们的效果是一样的
    5 一旦类变量的值被改变,通过类或类的任意一个实例来访问类变量,得到的都将是被改变后的值
    6 将在类的初始化之前初始化

 2、实例变量(非静态变量)
    1 不能向前引用,如果向前引用,则称为非法向前引用,这是不允许的
    2 变量属于类的实例对象
    3 随着类的实例被创建而分配内存空间
二、局部变量:
    形参、方法内定义的变量、代码块中定义的变量,都属于局部变量。

注:形参和方法内定义的变量不能用static修饰,可以用final修饰

下面代码,编译错误

public void test(static int b){
       static int a = b;
   }
***********************************************************************************

非静态代码块
    直接由 { } 包起来的代码,称为非静态代码块

静态代码块
    直接由 static { } 包起来的代码,称为静态代码块

类变量(静态变量)、实例变量(非静态变量)、静态代码块、非静态代码块 的初始化时机
     static 关键字修饰的(如:类变量[静态变量]、静态代码块)将在在类加载的时候(没有new对象的时候就进行初始化)类被初始化创建实例对象之前被初始化,而且是按顺序从上到下依次被执行。
    没有 static 关键字修饰的(如:实例变量[非静态变量]、非静态代码块)初始化实际上是会被提取到类的构造器中被执行的,但是会比类构造器中的代码块优先执行到,其也是按顺序从上到下依次被执行。

 

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 6
博文 212
码字总数 196252
×
LYQ1990
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: