0020 Java学习笔记-面向对象-变量

时间:2021-04-21 06:40:43

变量分为哪些

  • 成员变量:类里面,方法外面定义的变量
    • 实例变量:没有用static修饰的变量,属于对象;存在期:创建实例~销毁实例;作用域:与该实例的生存范围相同
    • 类变量:用static修饰的变量,属于类;存在期:类的准备阶段~销毁该类;作用域:与类的生存范围相同
  • 局部变量:
    • 形参:方法签名中声明的变量;作用域:整个方法内
    • 方法局部变量:方法体内部声明的变量;作用域:定义该变量之处~方法结束
    • 代码块局部变量:由花括号括起来的代码块内部声明的变量;作用域:定义该变量之处~代码块结束
  • 变量命名:
    • 有意义;首字母小写+驼峰命名法

成员变量

  • 在书写类时,不需要将成员变量初始化
  • 在类的准备阶段(类变量)或者创建实例(实例变量)时,会进行默认初始化

局部变量

  • 形参:在调用方法时,会传入参数,因而不需要初始赋值
  • 方法局部变量+代码块局部变量:在使用前,得先给个初始值
  • 局部变量只保存基本类型或者对象的引用,所占的内存区域较小

变量的重名

  • 成员变量不能重名,即使一个类变量,一个实例变量
  • 形参与形参不能重名
  • 方法局部变量不能重名
  • 形参与方法局部变量不能重名
  • 代码块内部的变量只在代码块内部有效,不能与外部的变量重名
  • 成员变量与局部变量可以重名,成员变量会被局部变量覆盖;要做区分时,用this.成员变量或者类名.成员变量来访问成员变量

变量的使用规则

  • 使用成员变量:
    • 用于描述某个类或对象的固有信息;类相关的变量定义为类变量,比如人都有2个眼睛;实例相关的变量定义为实例变量
    • 保存某个类或对象的状态信息的变量
    • 需要在多个方法间进行共享的变量
  • 局部变量:
    • 尽可能缩小局部变量的作用范围,在内存中的停留时间越短,性能越好

其他

  • 类在使用之前要经过:类加载、类验证、类准备、类解析、类初始化等阶段
  • 栈内存中的变量,无序系统垃圾回收,随方法或代码块的运行结束而结束