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

时间:2010-02-04 09:54:17

标签: java

请有人告诉我oops或java中'静态变量'和'正常变量'之间的区别。如果可能,也可以使用它们。

8 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:3)

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

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

答案 2 :(得分:2)

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

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

已编辑:回答您关于'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;
          }

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

希望现在很清楚。

答案 3 :(得分:1)

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

如果您有静态变量,则为Age类  static int staticAge;

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

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

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

答案 4 :(得分:1)

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

在上述计划'公司'和' Car' class有3-3个对象但是对于静态变量,只创建一个副本,没有静态变量有3个单独的内存分配所以在' Company' class companyName变量只会创建一次,其中branch变量将为每个对象创建3次,同样的东西适用于Car类。

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

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

答案 5 :(得分:0)

除非您制作final,否则所有变量都是动态的。静态只是另一个野兽。

答案 6 :(得分:0)

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

答案 7 :(得分:0)

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