Static变量和方法的一些理解
静态变量:static,用static修饰符修饰的域是仅属于类的静态变量。静态变量是类中每个对象共享的变量,他们是类的变量,不属于任何一个类的具体对象,是一个公共的存储单元,任何一个类的对象访问它时,取到的都是相同的数值。
静态初始化器:static,静态初始化器是又static关键字引导的一对大括号括起的语句组,其作用是在加载的时候,初始化类的静态变量。
与构造函数的相同,都是为了初始化,但是又有所不同
1.构造函数时对每个新创建的对象进行初始化,而静态初始化器是对类自身进行初始化。
2.构造函数在用new运算符产生新对象时由系统自动执行,而静态初始化器则是在它所属的类加载到内存时由系统调用执行。
3.不同于构造函数,静态初始化器不是方法,没有返回值,方法名,和参数。
当在一个类中定义构造函数和静态初始化器时的调用顺序为,先调用静态初始化器,然后再调用构造函数
当子类和父类都含有各自的构造函数和静态初始化器时,先调用父类的静态初始化器,然后调用子类的静态初始化器,接着再调用父类的构造函数,最后调用子类的构造函数。
2 3 public class StaticMethod { 4 public StaticMethod() 5 { 6 System.out.println("StaticMethod construter"); 7 8 } 9 10 static{ 11 System.out.println("StaticMethod static method"); 12 } 13 public static void main(String[] args) { 14 StaticMethod sm = new StaticMethod(); 15 }
结果为:
StaticMethod static method StaticMethod construter
当有子类和父类时情况如下:
1 public class StaticMethod { 2 public StaticMethod() 3 { 4 System.out.println("StaticMethod construter"); 5 6 } 7 8 static{ 9 System.out.println("StaticMethod static method"); 10 } 11 12 13 } 14 public class StaticSun extends StaticMethod { 15 public StaticSun() 16 { 17 System.out.println("Sun construter"); 18 } 19 static{ 20 System.out.println("Sun static method"); 21 } 22 23 public static void main(String[] args) { 24 // TODO Auto-generated method stub 25 StaticMethod sm = new StaticSun(); 26 27 } 28 29 }
结果为:
StaticMethod static method Sun static method StaticMethod construter Sun construter
posted on 2015-01-07 13:21 daocaorendeshijie 阅读(375) 评论(0) 编辑 收藏 举报