问题What's the meaning of System.out.println in Java?我发现out
中的System.out.println
是静态字段。
从C / C ++背景来看,很容易理解静态方法,因为它与C中的函数相同。但是,我不确定静态字段的用例。
这是一种使用多种方法而不实例化对象的方法,就像我们使用System.out.println
而不实例化任何东西一样吗?或者静态字段有用例吗?
答案 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)
out
是object
PrintStream
。
System
是java.lang
包
println
是PrintStream
类
要访问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";