有人可以给出一个易于理解的静态变量和静态方法的定义吗?
这些与非静态变量和方法相比如何?
在 Java 中,static
表示类方法和类变量(相对于实例方法和实例变量)。这些方法和变量可以在没有实例的情况下访问。
将此与实例方法和实例变量进行对比:它们必须通过对象访问。例如,length()
对一个对象进行操作:
String a = "hello";
int len = a.length();
相反,valueOf
不能对对象进行操作;此外,它在调用时会创建一个新对象:
String x = String.valueOf(123.45);
<objectName>
请注意如何使用后跟一个点来调用实例方法,而使用后跟一个点.
来访问静态方法。<className>
.
我认为这不是一个容易回答的问题,因为它的含义因语言而异。如果我用最笼统的术语来表达,可能会因人而异:
静态变量是在类的所有实例之间共享的变量。
静态方法是可以在类上调用的方法,通常不需要实例化该类。
同样,如果我要选择三种不同的语言,我会给出三种不同的答案。
维基百科也可能有助于定义这些东西。
http://en.wikipedia.org/wiki/Method_(computer_programming ) http://en.wikipedia.org/wiki/Static_variable
'static' 关键字可能会令人困惑,因为在它起源的 C 语言中,它具有多种含义。当用于在函数中声明变量时,意味着该变量在函数之外具有生命周期。它本质上是函数私有的全局变量。如果全局变量是静态的,则它本质上是该源文件的私有变量。在这两种情况下,变量都只有一个内存位置,就像全局变量一样。只是编译器阻止您在函数或编译单元之外访问它。
我假设“静态”这个词被用作静态变量的位置永远不会改变,而不是普通的局部变量,它将在堆栈的某处有一个内存位置,具体取决于调用函数时堆栈的样子.
创建 C++ 时,此关键字被重新用于引用类级别的属性和方法。我认为这种想法是静态方法或属性是类私有的一种全局。如果您考虑这些在内存中的布局方式,那么它具有某种意义,因为静态属性将像全局变量一样具有单个地址。唯一的区别是编译器不允许你在类外使用它。
由于 Java(和其他语言)具有受 C++ 启发的语法,因此也使用“静态”来引用类方法和属性。很不幸,因为这个关键字的使用和英文的意思关系不大。
但总的来说,这就是看待它的方式。在大多数语言中,如果它是“静态的”,那么整个程序中只有一种。将其视为具有单个固定内存地址的东西。
静态变量是类的所有实例使用的变量,其中与普通变量一样,该变量再次被初始化。静态方法可以在不创建对象的情况下调用它们。
我将展示示例以清楚地理解静态方法。
从键盘输入数据时 java 使用 Scanner 类
前任; 扫描仪 scn = new Scanner(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);
}
所以我们没有实例化 Calculate 类,而是使用了静态的 calculatePower 方法