看到有人去面试Java碰到问static的问题,到网上找了几个类似的问题,特此记录

来源:互联网 发布:如何领淘宝内部优惠券 编辑:程序博客网 时间:2024/05/13 10:53

继承与static

public class Test extends Y {Test(String str) {super(str);// TODO Auto-generated constructor stub}Y y = new Y("Test");static {System.out.println("tttt");}public static void main(String[] args) {new Z("mian");}}class Y {static {System.out.println("t");}Y(String str) {System.out.println("Y - " + str);}}class Z extends Test {Y y = new Y("Z");static {System.out.println("tt");}Z(String str) {super(str);System.out.println("Z");}}




输出结果是:

大概的Java载入顺序为:

main--->父类 --- >static--->父类属性--->父构造函数--->自己属性--->自己构造函数




为什么要用static?

方便在没有创建对象的情况下来进行调用(方法/变量)。


静态方法中不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态成员方法/变量的

static变量

  static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响


参考:

http://www.cnblogs.com/dolphin0520/p/3799052.html

http://blog.sina.com.cn/s/blog_70b845780100n9zz.html 

0 0
原创粉丝点击