Java中静态字段的用法是什么?

时间:2013-02-17 04:22:00

标签: java static

问题What's the meaning of System.out.println in Java?我发现out中的System.out.println是静态字段。

从C / C ++背景来看,很容易理解静态方法,因为它与C中的函数相同。但是,我不确定静态字段的用例。

这是一种使用多种方法而不实例化对象的方法,就像我们使用System.out.println而不实例化任何东西一样吗?或者静态字段有用例吗?

7 个答案:

答案 0 :(得分:3)

静态字段是类的属性,它在堆上分配并独立于特定的对象实例。

例如,您可以使用静态变量来计算类的实例数。

答案 1 :(得分:3)

static变量/方法不仅具有在没有实例化的情况下使用的属性,而且在多个实例中也是一致的。

例如,

public class A {
    public int a = 1;
    public static int b = 2;
}

现在,当我执行A a1 = new A()A a2 = new A()时,A.a获取内存的2倍并存储在对象实例中,而A.b只获取内存一次,并且存储在实例外部。

这方面的一个主要例子是

a1.b = 3;
System.out.println(a2.b);

这将打印3而不是2,因为a1更改了整个类的b值,因此更改了所有实例。

答案 2 :(得分:0)

System类只有一个OutputStream实例写入标准输出(称为out),因此它是一个静态变量。我们不需要多个实例,因为只有一个标准输出。

答案 3 :(得分:0)

静态字段,是一个设置的字段,可以在不实例化类的情况下获取(使用新的ClassName())。

例如:

public class MyClass {
  public static int number = 1;
}

使用上面的代码,您可以使用MyClass.number获取“数字”字段。

public class MyClass {
  public int number = 1;
}

现在,您需要通过构造函数实例化MyClass。由于没有声明构造函数,您只需使用新的MyClass():

MyClass cl = new MyClass();
cl.number; // <-- The number

答案 4 :(得分:0)

outobject PrintStream

Systemjava.lang

中的一个类

printlnPrintStream

的实例方法(不是静态方法)

要访问out中的字段System而不实例化System,则会将字段声明为static

答案 5 :(得分:0)

静态字段也称为“类”字段(与“实例”字段相对)。

这意味着它们可以在不需要首先实例化类的情况下访问它们。

因此,您可以在Math.abs()类上调用类方法(如Math),而无需实例化Math类。您还可以访问Math.PI等属性。

此外,更改类属性意味着它会影响该类的所有实例,这意味着实例化的每个对象都会看到此值更改,从而允许您通过单个属性更改来影响它们。

答案 6 :(得分:0)

除了System中的.out var之外,它还可以用作一个类的所有实例都可以更新的共享变量

private static int meatballsConsumed;

或作为通用共享变量

public static String thisSeemsDangerous;

或作为常数

public static final String FLD_OF_DREAMS = "COSTNER,KEVIN";