java / oops中的静态变量和动态变量有什么区别?

请告诉我oops或java中’静态变量’和’动态变量’之间的区别。 如果可能的话也使用它们。

静态变量通常是与类型相关联的变量。 将此与实例变量(与特定的类型实例或局部变量相关联)进行比较,该变量与对方法的一个特定调用相关联。

我不知道“动态变量”的任何标准定义 – 您在哪里遇到过这个术语?

考虑具有静态和动态变量的类。

  • 动态变量:创建类的实例时,每个对象都有自己的动态变量副本。 对于每个对象,此变量的值将不同,无论该对象中为其分配的值如何。
  • 静态变量:这些是类级变量。 这些变量的值将在类的所有对象之间共享。 当其中一个对象更改其值时,该值将是其他对象可用的最新值。 这意味着这些是共享变量。

静态变量是类或类型级别的变量。 并且只有一个副本可用于该类类型的所有实例。

正如我所知,并没有动态变量的概念。 如果您在某个特定背景下遇到过这个概念,那么请提一下,可能对您有所帮助。

编辑 :回答你关于’static int’和’int’之间差异的问题。

假设你有一个class级

public class StaticInfo{ private static int count; private int variable; //.. say setter and getters for variable //.. static setter and getters for count; } 

因此,如果您创建两个StaticInfo类型的对象,那么这两个将具有两个不同的“变量”成员,但是一个公共计数成员是一个类成员。

希望现在很清楚。

静态变量在Type的生命周期中实例化一次。

对于类Age,如果你有一个静态变量static int staticAge;

另一个变量作为实例变量int instanceAge;

分配给staticAge的值对于Age的所有实例都是相同的,因为相同的变量将在所有对象之间共享。

instanceAge的值将特定于Age的对象。

在java中,静态变量是通过在变量数据类型前面使用’static’关键字创建的。

  static int count 

如果您要使用静态变量的概念,则不会为每个对象创建静态变量而不是此对象,它只为类创建一个副本。 这里找到java中的代码示例

  class Company{ static String companyName; String branch; } class Car{ static String carName; String model; } public class Server{ public static void main(String ar[]){ Company company1 = new Company(); Company company2 = new Company(); Company company3 = new Company(); Car car1 = new Car(); Car car2 = new Car(); Car car3 = new Car(); } } 

在上面的程序中,’Company’和’Car’类有3-3个对象,但对于静态变量,只创建一个副本,没有静态变量有3个独立的内存分配所以在’Company’类中,companyName变量只创建一个where branch变量将为每个对象创建3次同样的事情适用于Car类。

简而言之,静态变量内存在类的所有对象之间共享,并且可以进行修改。

动态变量意味着你想要创建类动态的变量,而这是不可能的,你可以使用javareflection在动态上初始化变量。

所有变量都是动态的,除非你让它们成为final 静态只是另一个野兽。

这个问题没有多大意义。 Java没有动态变量。 例如,CommonLisp有它们,但Java没有。

静态变量(应该)保持相同,例如水浴的温度,特定弹簧的k常数。 动态变量随着实验的进行而变化,例如空气温度和压力,自然光量。