首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >关于java中的静态变量的问题

关于java中的静态变量的问题
EN

Stack Overflow用户
提问于 2011-08-04 07:10:07
回答 6查看 296关注 0票数 0

我试图在我的程序中使用静态变量,并理解静态变量意味着每次都使用变量的相同实例。

然而,我一直在使用静态变量,因为我觉得它允许我在不‘实例化’(新)类的情况下获得我需要的变量。或者特别是因为我需要另一个类中的变量,并且我不应该创建该类的新实例。

这是正确的做法吗?

我是否应该创建静态GET方法来获取在类中声明的静态变量?

EN

回答 6

Stack Overflow用户

发布于 2011-08-04 07:21:17

...,我一直在使用静态变量,因为我觉得它允许我在不‘实例化’(新)类的情况下获得所需的变量

声明一个变量静态并不意味着你绕过了新的。它只是表示变量引用了它的类的一个实例,而且只引用了一个实例。

示例:

代码语言:javascript
运行
复制
class Universe { 

   //there is only one Earth, but it needs to be constructed.  In this example, when
   //the Universe class is loaded, the initialization below happens.
   static World EARTH = new World(...);

   public static Planet getTheEarth() { 
       return EARTH;
   }

}

,或者特别是因为我需要另一个类中的变量,并且我不应该创建该类的新实例。

好的,那么把对变量的引用传递给另一个类。

示例:

代码语言:javascript
运行
复制
class Earth {    

    Moon moon;

    public Earth(Moon moon) {    
        this.moon = moon;
    }
}
票数 1
EN

Stack Overflow用户

发布于 2011-08-04 07:15:25

如果您想在一个类的所有实例之间共享一个值,则使用静态变量。例如,如果你有像这样的东西

代码语言:javascript
运行
复制
public class Person {

public static int instancesCount = 0;

public Person() { 

Person.instancesCount++;
}
}

这意味着对于每个Person实例,“全局”instanceCount变量将递增1。所以如果你这样做了

代码语言:javascript
运行
复制
Person p1 = new Person();
Person p2 = new Person();

然后,这两个实例(p1和p2)都可以访问Person.instanceCount变量,并且它们都将显示数字2。此外,如果您修改其中任何一个实例中的变量,那么这两个实例将具有相同的可见性。

基本上,除非你知道你在做什么,否则不要使用静态变量。

票数 0
EN

Stack Overflow用户

发布于 2011-08-04 07:18:28

首先,您不应该使用GET方法来获取类中声明的静态变量。例如,如果你想打印静态变量,你可以这样做:

代码语言:javascript
运行
复制
static int staticVariable = 0;    
ClassObject c;
System.out.println(c.staticVariable);

基本上,类的任何对象都可以访问静态变量,您所要做的就是使用类的实例来访问它。我建议在您对静态变量有更好的理解之前,不要使用它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6934396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档