static详谈
Posted 静女神
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了static详谈相关的知识,希望对你有一定的参考价值。
Static
静态代码块:
static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。
静态成员变量:
静态成员变量对所有对象所共享的,在内存中只有一个副本。只初始化一次。
静态方法:
静态方法中只能调用静态方法和静态的成员变量 ,在静态方法中不能使用this关键字,因为它是不需要构造对象就能直接访问的,而this表示的是一个对象。
实例:
package cn.com.net; public class Z extends X{ Y y=new Y(); public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("--start main-----"); new Z(); System.out.println("--end main-----"); } Z(){ System.out.println("Z"); } { System.out.println("方法Z"); } static{ System.out.println("staticZ"); } } class X{ X(){ System.out.println("X"); } { System.out.println("方法X"); } static{ System.out.println("staticX"); } Y y=new Y(); } class Y{ Y(){ System.out.println("Y"); } { System.out.println("方法Y"); } static{ System.out.println("staticY"); } }
运行结果:
staticX
staticZ
--start main-----
方法X
staticY
方法Y
Y
X
方法Y
Y
方法Z
Z
--end main-----
由结果分析可知在运行main方法后,将要加载类Z,后发现继承了X就先去加载X,静态代码块先被加载,然后装载Z,Z的静态代码块也被加载,接着按顺序初始化成员,最后运行构造函数。先父后子,先static,成员变量从上到下,最后构造函数。
以上是关于static详谈的主要内容,如果未能解决你的问题,请参考以下文章