静态域和静态方法
1.静态域:
如果将域用static修饰,则该域属于类,在类加载时就已经存在于方法区中,每个类中仅存在一份。
而每个对象对于所有的实例域都有自己的一份拷贝。
可以直接用类名调用
2.静态常量
(1).Math类中的PI
public class Math{
public static final double PI = 3.14159265358979323846;
}
(2)System.out
public class System{
public static final PrintStream out = ...;
}
**乍一看,由于该引用被final修饰,这就表明该引用就不能再被置为其他的流。但实际上是可以改变的。在System类中是存在一个setOut方法,如下:
public static void setOut(PrintStream out) {
checkIO();
setOut0(out);
}
因为setOut0(out)方法是一个本地方法,而不是用Java语言实现的。本地方法可以绕过Java语言的存取控制机制。
但在我们自己编写时,不应该出现将final修饰的引用进行重置的情况。
3.静态方法:
静态方法是一种不能向对象试实施操作的方法 没有隐式参数
一般在下面两种情况下使用静态方法:
(1).一个方法不需要访问实例状态,其所需要的方法都是通过显示参数提供
(2).一个方法只需要访问类的静态域
例如:工厂方法 main函数