变量作用域

1.在方法中声明的变量从其声明开始到方法结束一直存在(可见)。

2.在代码块中声明的变量在代码块结束之前一直存在。

3.方法的参数在方法返回前一直存在。

4.对象中的变量在包含它们的对象的整个生命周期中都存在。它们的可见性也可以由特殊访问修饰符控制。

5.static(类)变量在程序运行的整个过程中都存在。它们的可见性也可以由访问修饰符定义。


要点

  • 在方法内声明的所有变量从声明开始到方法结束一直存在(可见)(示例1)。

  • 如果变量是在代码块中声明的,则它在代码块结束之前一直存在(示例 2)。

  • 如果变量是方法参数,则它在方法的整个主体中都存在(可见)(示例3)。

  • 如果变量是实例变量(示例4),则它链接到某个对象,并且在对象存在期间一直存在。如果没有对象,则该变量没有任何实例。可以从类的所有方法中访问变量(即变量可见),无论这些方法是在该变量之前还是之后声明的。将为每个对象创建一个新变量。该变量独立于其他对象。不能从 static 方法访问实例变量。

  • 如果变量被声明为 static,即标记有关键字 static,则它在类存在期间一直存在。JVM 通常在首次使用类时将其加载到内存中。static 变量也是在此时进行初始化的。

  • static 变量由类的所有对象共享。

  • 局部变量:方法内声明的所有变量都必须具有唯一的名称。方法的参数也被视为局部变量。

  • 成员变量:成员变量对于每个类也必须是唯一的,但局部变量和成员变量的名称可以相同。

CodeGym自学笔记15——变量作用域_代码块

CodeGym自学笔记15——变量作用域_成员变量_02

  • 局部变量将遮罩实例变量。换言之,局部变量是要访问的变量。但是,你也可以访问实例变量。只是这样做有点复杂。
    CodeGym自学笔记15——变量作用域_代码块_03

static

  • static 方法和变量不链接到类的对象;它们链接到类本身。
非 static 方法的工作原理

CodeGym自学笔记15——变量作用域_代码块_04

  • 使用 <对象> 点 <方法名称> 调用方法时,实际上是在调用类方法,并将该对象作为第一个参数进行传递。在方法内,对象称为‘this’。方法中的所有操作都是针对此对象及其数据执行的。

static 方法的工作原理

CodeGym自学笔记15——变量作用域_成员变量_05

总结:

  • 调用静态方法:类名.方法名() 非静态方法: 方法名()
  • 在方法中,当实例变量(成员变量)与局部变量相同,已经为局部变量赋值,局部变量将掩盖原来的实例变量
  • 非静态: this.实例变量名 静态:类名.实例变量名

你需要拥有自己的策略和独特计划,才能在不牺牲一切的前提下迈向顶尖。

@侧耳听智慧,专心求聪明 Turnging your ear to wisdom and applying your heart to understanding!