繁体   English   中英

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

[英]What is the difference between a static variable and a dynamic variable in java/oops?

请有人告诉我oops或Java中的“静态变量”和“普通变量”之间的区别。 如果可能,还要使用它们。

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

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

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

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

静态变量是在类或类型级别上的那些变量。 该类类型的所有实例都只能使用它的一个副本。

据我所知,没有动态变量的概念。 如果您在某些特定情况下遇到了这个概念,请提及它,可能会对您有所帮助。

编辑 :回答“ static int”和“ int”之间的区别的问题。

假设您有一个班级

           public class StaticInfo{

            private static int count;
            private int variable;
            //.. say setter and getters for variable
            //.. static setter and getters for count;
          }

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

希望现在清楚了。

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

对于年龄类,如果您有一个静态变量static int staticAge;

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

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

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();
            }
        }

在上面的程序中,“公司”和“汽车”类具有3-3个对象,但是对于静态变量,将仅创建一个副本,并且没有静态变量具有3个单独的内存分配,因此在“公司”类中,companyName变量将仅在分支处创建一次变量将为适用于Car类的相同对象的每个对象创建3次。

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

动态变量意味着您要创建动态类的变量,这是不可能的,您可以使用Java反射在动态变量上初始化变量。

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

除非您将它们定为final否则所有变量都是动态的。 完全是另一只野兽。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM