2010-02-04 78 views
0

请some1告诉我一个'静态变量'和'动态变量'在oops或java中的区别。如果可能,也可以使用它们java/oops中的静态变量和动态变量有什么区别?

+6

没有这样的术语区别。你从哪里听到的? – skaffman 2010-02-04 09:55:19

+0

问题是“静态类型”和“动态类型”变量之间的区别?这是有道理的,因为一个问题 - “动态变量”并不意味着任何事情,根据你得到的答案 – Ash 2010-02-04 10:08:44

+0

如果你在面试中被问到了这个java工作,现在是时候站起来离开 – skaffman 2010-02-04 13:24:17

回答

3

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

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

+0

我在采访中被提到 – vini 2010-02-04 10:02:45

+0

动态变量是来自CommonLisp(也可能是其他Lisp)的术语。它不存在于Java中。 – 2010-02-04 13:11:43

2

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

并没有像我所知的动态变量的概念。如果您在某种特定环境下发现了这个概念,那么请提及这一点,可能有助于解释您。

EDITED:回答你'静态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的两个对象那么这两个将有两个不同的“变量”的成员,但一个共同的计数成员是类成员。

希望现在清楚。

+0

'静态int'和'int'之间的区别是什么 – vini 2010-02-04 10:15:50

0

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

1

静态变量在类型的生命期中被实例化一次。

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

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

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

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

0

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

0

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

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

的例子在上面的程序“公司”和“汽车”类有3-3对象但对于静态变量只有一个副本将被创建并没有静态变量有3个独立的内存分配因此在'Company'类中,companyName变量将只创建一次,其中分支变量将为每个对象创建3次,同样的事情适用于Car类。

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

动态变量意味着你想创建类动态变量,这是不可能的,而不是你可以使用Java反射动态初始化变量。

2

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

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

在编程中,动态变量是一个变量,其地址是在程序运行时确定的。相比之下,静态变量在编译时为其保留了内存。