如何在 Java 中管理变量作用域

范围是指变量的可访问区域。它确定可以在何处使用声明的变量。尝试在其范围之外使用变量会给您带来编译时错误。

根据经验,在确定赋予变量的范围时,您应该始终使用最小特权原则。根据这个原则,一个变量的可见性应该只有它完成工作所需的可见性,而不是更多。

范围规则

有四个基本规则管理声明的范围。

规则1

当你声明一个参数时,它的作用域在函数体内。

 String withdraw (int amount){
// this is the scope of the parameter "amount" ie from the left brace ,{, to the the right one, }
}

规则 2

函数中声明的变量的作用域是从它声明的部分到函数体的结尾。在函数体内声明的这种类型的变量称为局部变量。因此,该变量具有局部作用域。

 String withdraw (int amount){
String currency;
int transaction_fee = 2; // this is a local variable and it's scope begins from here till the right brace, }
}

相关:什么是面向对象编程?外行术语解释的基础知识

规则 3

在 for 语句的标题中声明的变量也具有局部作用域。

 for ( int y=11;y <20; y++){
// variable y has local scope
}

在这一点上,重要的是要提到如果您的方法有两个同名的局部变量,您将收到编译时错误。

规则 4

方法或类字段的范围是整个类体。这使类的实例方法能够使用类的方法或字段。

看看下面的例子。这是上述规则的完全工作代码实现。您可以在 PC 上编译并运行它。

 class Account {
int y = 2; // class field
static void withdraw(int amount){
String z;
for(int y=1; y<=3; y++){ // line 7
System.out.println("
Remember to hide your PIN.");}
}
public static void main(String args[]){
withdraw(50); }
}

请注意类字段和第 7 行的代码。如果您使用与类字段之一使用的名称相似的名称声明参数或局部变量,则执行仍将正常继续且不会出错。这称为阴影。

在上面的例子中,变量 y 被声明了两次,但编译器没有标记任何错误。编译器首先“隐藏”类字段,直到块被执行。

相关: Java 中解释的 4 个访问修饰符

有时您可能需要访问块中的阴影字段。这可以通过两种方式完成:

a) 如果您正在处理实例变量,则可以使用关键字this 。请参阅下面的示例:

这个.x x 是一个实例变量

b) 如果您尝试访问的变量是静态类变量,请使用以下语法访问它:

 ClassName.x // x is a static variable

类范围

通常,每个对象都有自己的实例变量。在某些情况下,您需要与所有实例共享的变量的相同副本。在这种情况下,您需要将它们设为静态。

使用关键字static定义的类成员具有类作用域。因此,静态变量具有类作用域。它们可以被类的所有方法访问。要访问类的公共静态变量,请使用:

 ClassName.variable_name

另一方面,类的私有静态变量只能由类的方法访问。

在你的范围内获取类和构造函数

有时您可能需要一个在初始化后访问时不会被修改的变量。如果您需要这样做,请使用关键字final 。只需将它放在您声明的变量之前即可使用它。

 final double PI = 3.14159;

尝试修改声明为final的变量会产生编译时错误。了解必须立即初始化最终变量也很重要。您不能选择稍后对其进行初始化。

此时,您应该学习 Java 中的构造函数和类。