2012-05-04 45 views

回答

7

我不认为这是一个容易回答的问题,因为它意味着基于语言的稍微不同。如果我把它放在最一般的条款中,可能会因人而异:

静态变量是在类的所有实例之间共享的变量。

静态方法是一种可以在类上调用的方法,通常不需要实例化该类。

再次,如果我要选择三种不同的语言,我会给出三种不同的答案。

维基百科也许可以帮助一些人来定义这些东西。

http://en.wikipedia.org/wiki/Method_(computer_programminghttp://en.wikipedia.org/wiki/Static_variable

+0

我谈论的Java尤其如此。 – WAMoz56

15

在Java中,static表示class methods和类变量(与实例方法和实例变量)。这些方法和变量可以在没有实例存在的情况下访问。

将此与实例方法和实例变量进行对比:它们必须通过对象进行访问。例如,length()操作的对象上:

String a = "hello"; 
int len = a.length(); 

相反,valueOf不能在对象上操作;此外,将创建一个名为当一个新的对象:

String x = String.valueOf(123.45); 

注意实例方法是如何使用<objectName>后跟一个点.调用,而使用<className>后面跟着一个点.访问静态方法。

6

'静态'关键字可能会令人困惑,因为在C源代码中它有多重含义。当用于在函数中声明一个变量时,这意味着该变量的生命周期不在函数中。它本质上是一个全球性的功能。如果全局变量是静态的,那么它对于该源文件来说基本上是私有的。在这两种情况下,变量都具有单个内存位置,就像全局一样。只是编译器阻止您在函数或编译单元之外访问它。

我认为静态变量的位置永远不会改变,而不是一个正常的局部变量,它会在栈上的某个地方有一个内存位置,这取决于当堆栈看起来像什么时该函数被调用。

当创建C++时,该关键字被重新用于引用类级别的属性和方法。我认为,这个想法是,一种静态的方法或者财产是一种对于这个阶级来说是私人的全球性的东西。如果你考虑如何在内存中布置这些内容,它会产生某种意义,因为静态属性将像全局变量一样具有单个地址。唯一的区别是编译器不允许你在课堂外使用它。

由于Java(和其它语言)已通过语法C++,启发使用“静态”来指代类方法和属性用于那里。这很不幸,因为使用这个关键字与英文含义没有多大关系。

但总的来说,这是看待它的方式。在大多数语言中,如果它是“静态”,整个程序中只有其中一个。把它看成是一个固定的内存地址。

1

静态变量是由其中在正常变量该变量被初始化再一类的所有实例中使用的变量。 静态方法可以在不创建对象的情况下调用它们。

1

我将展示的例子清楚地了解静态方法。

当从键盘输入数据时使用扫描仪类

ex; Scanner scn =新扫描仪(System.in); int a = scn.nextInt();

因此,这意味着nextInt()方法也不是一成不变的。

静态方法是,它可以在没有实例化一个类使用的方法。

请看下面的例子:静态方法

public class Calculate { 

    static void calculatePower(int num, int pow) { 
     System.out.println(Math.pow(num, pow)); 
    } 


} 

用法。

public static void main(String[] args) { 
    Calculate.calculatePower(2,8); 
} 

,所以我们没有实例化的计算类和使用方法calculatePower是静态的

相关问题