1、关于静态方法:
?
??? 1)静态方法代表一种不依靠实例变量也就不需要对象的行为。
?
??? 2)静态方法通过直接使用类名调用(最常用),非静态方法通过对象的引用变量来调用。
?
??? 3)可以通过对象的引用变量代替类名调用静态方法(容易造成误解,不常用)。
?
??? 4)带有静态方法的类通常(虽然不一定是这样)不打算被初始化。
?
??? 5)静态的方法不能调用(访问)非静态的变量。
??? 原因:因为非静态的变量(实例变量)是归属于某个实例(对象)的,所以尝试在静态方法中访问实例变量时,编译器会抱怨说:“我是属于类的,我可不知道你说的是哪个实例(对象)的变量!”。
?
??? 6)静态的方法不能调用非静态的方法(原因类似以上第4点)。
?
2、关于静态变量:
??? 1)静态变量的值对于同类的所有实例都是相同的,即同类的所有实例(对象)都共享同一份静态变量。
?
??? 2)静态变量:每个类一份;实例变量:每个实例一份。
?
??? 3)静态变量是在类被加载的时候初始化的。
??? 注:通常Java虚拟机会加载某个类是因为第一次有人尝试创建该类的实例或使用该类的静态方法或变量。
???
??? 4)静态变量会在该类的任何对象创建之前就完成初始化。
?
??? 5)静态变量会在该类的任何静态方法执行之前完成初始化。
?
3、关于静态常量
??? 1)静态常量:静态的final变量。
??? 2)静态常量的初始化。
??????? a)在声明的时候:如public static final int PI=3.14。
??????? b)在静态初始化程序(静态代码块)中:如static{...}。
??????? 注:静态初始化程序是一段在加载类时会执行的程序代码,他会在其他程序可以使用该类之前执行,所以很适合用来初始化静态的final变量(静态常量)。
?