Java 为什么不将每个变量声明为静态变量

Java 为什么不将每个变量声明为静态变量,java,static-variables,Java,Static Variables,我是Java新手,最近研究了静态变量。我知道,对于一个静态变量,内存只分配一次。这意味着它将节省大量内存。我的问题是,如果静态变量节省内存,为什么不将每个变量声明为静态变量呢。这将在创建应用程序时节省大量内存。如果这是一个愚蠢的问题,请原谅,但实际上我只是有点好奇。创建属性/变量的要点是,您希望它们作为对象的“功能”。例如,如果有一个类“Car”,可能需要一个变量来引用汽车的颜色 问题是“Car”的每个实例(在现实世界中是每个不同的汽车)都有一个值,因此每个实例都必须是一个“独立”变量 您可以对

我是Java新手,最近研究了静态变量。我知道,对于一个静态变量,内存只分配一次。这意味着它将节省大量内存。我的问题是,如果静态变量节省内存,为什么不将每个变量声明为静态变量呢。这将在创建应用程序时节省大量内存。如果这是一个愚蠢的问题,请原谅,但实际上我只是有点好奇。

创建属性/变量的要点是,您希望它们作为对象的“功能”。例如,如果有一个类“Car”,可能需要一个变量来引用汽车的颜色

问题是“Car”的每个实例(在现实世界中是每个不同的汽车)都有一个值,因此每个实例都必须是一个“独立”变量


您可以对此类的所有对象共享的静态变量使用静态变量。例如,一个计数器来确定有多少辆车。此变量属于名为“Car”的类,但不属于该类的任何特定实例。

它是OOP的基础。请看一个例子:

class Person {
    public String name = "Foo";
}
字段
name
不是静态的,这意味着类
Person
的对象不会共享它,每个人都有自己的名字。当你改变一个人的名字时,其他人不会受到影响。但如果将其设置为静态:

class Person {
    public static String name = "Foo";
}

这意味着,所有人都有相同的名字,这有点奇怪,你同意吗?

静态变量是按类级别创建的。在创建类的对象时不会创建它。对于类的每个实例或对象,静态成员变量只有一个值。这违背了拥有对象和围绕对象创建应用程序的目的。

是的,它将在生命周期中分配一次内存,称为类变量。类变量可以通过类直接访问,而无需创建实例。这意味着它可以从任何地方访问。此外,内存分配意味着,即使代码中的许多地方没有使用该变量,只要程序正在运行,它也将永远留在内存中,并会占用不必要的空间。

编写更多程序。你需要非静态变量来正确使用对象。在这里你可以找到一个答案,如果你想要一个类型的对象,例如两个字符串,不同的内容,你不能使用静态字段。为什么不给所有的朋友一个电话号码?为什么在中间停止?如果我们的主要目标是节省内存,那么让我们只使用一个类型为
Object
的变量!谢谢你的回答。无论如何,我已经研究过java中的final关键字使变量的值是静态的。也就是说,一旦声明变量,我们就不能更改它的值,这与您的情况非常相似。但是对于static关键字,我们可以更改该变量的值。只分配一次内存。这正是让我感到困惑的地方。以这种方式进行的小型优化(如果有的话)经常会打破面向对象编程的规则,导致软件质量差等。正确的讨论地点是一般的面向对象编程,而不是任何语言。