Java变量惯例



我对Java代码中的变量声明感到困惑。

我读过。。。不要试图使用全局变量声明。

不要使用这样的东西:

package cls;
public class test { 
   private String var;
   public someMethod(){ ... } 
}

使用?

package cls;
public class test { 
   public someMethod(){ 
       String var = null;
   } 
}

我不知道哪种方式是正确的。。。。

这完全取决于您需要什么。

然而,您的第一个示例不是全局变量,而是一个实例变量。

变量的作用域应尽可能小。这使得代码更容易推理。

实例变量是OOP的核心——类(对象(的存在是为了封装对象状态,以及对该状态进行操作的方法。例如,Person类可能有名字和姓氏实例变量:

public class Person {
    private String firstName;
    private String lastName;
    // Plus getters and setters for each.
}

这允许实例方法直接访问名字和姓氏变量,而不必在所有需要它们的方法之间传递它们。

第二个例子是一个局部变量。它只在声明的方法中可见。对它的引用可以传递给其他方法。

两者都是正确的。这两者都不是全局变量。第一个是类字段。它对于您创建的类的每个实例都是唯一的。类字段(即变量(一直保留在类的实例中,直到类本身被删除。

第二个是方法范围变量。它只是用于临时目的,以执行方法工作所需的计算,一旦方法中的代码完成,变量就会消失。

您可以将每个用于不同的目的。例如,如果您正在编写Car类,则可能会有一个SteeringWheel和Brake的类字段。但是,如果你有一种计算每加仑平均英里数的方法,你可以创建一个方法范围的变量来帮助执行计算。

Java没有全局变量。第一个变量是类级别的,维护类实例的状态,因此只要是类的实例就存在,而第二个变量是方法的局部变量,仅在方法执行期间存在。您可以使用第一个变量来存储跨越多个方法调用的状态信息。控件一离开该方法,第二个变量就会消失。此外,每次调用该方法时,都会在堆栈上创建另一个可由相同本地名称访问的变量。

在Java中不可能像在C等语言中那样拥有真正的"全局"变量。Java迫使您以面向对象的方式构建程序。

在上面的示例中,如果整个test对象都需要var,并且存储起来很重要,那么您将使用第一个示例。如果var仅在someMethod中是必需的,并且test对象存储它并不重要,则使用第二个示例。

请注意,即使使用第一个示例,var也被封装在test对象中,因此它根本不是真正的"全局",只是可能稍微与test的成员函数(这是实例/成员变量的全部点(有关。

Java中最接近"全局"数据的东西是:

public class GlobalVars {
   public static int globalInt;
}

您可以在整个代码中以GlobalVars.globalInt的形式访问globalInt,而无需创建GlobalVars的实例。

相关内容

  • 没有找到相关文章

最新更新