当前位置: 首页 > news >正文

南京网站建设价格/seo网站优化推广教程

南京网站建设价格,seo网站优化推广教程,私人定制网站建设,手机免费个人网站建站总结: 1、类加载时,执行静态代码块和初始化静态变量。执行顺序跟代码顺序一致。 2、类实例化时,初始化变量、执行代码块、执行构造。其中初始化变量和代码块的顺序跟代码顺序一致。执行构造是在最后。 3、实例化子类时,会先调用父…

总结:

1、类加载时,执行静态代码块和初始化静态变量。执行顺序跟代码顺序一致。

2、类实例化时,初始化变量、执行代码块、执行构造。其中初始化变量和代码块的顺序跟代码顺序一致。执行构造是在最后。

3、实例化子类时,会先调用父类的构造方法。调用构造方法之前,会先执行该类的代码块。

4、类只会加载一次。

5、静态变量或静态方法中如果调用构造,可以把构造当做一个普通方法来看。但会先执行一遍代码块。

 

下面是在网上找到的比较典型的例子,以此来说明

例一:

复制代码
class A {static {System.out.println("A的静态块");}private static String staticStr = getStaticStr();private String str = getStr();{System.out.println("A的实例块");}public A() {System.out.println("A的构造方法");}private static String getStaticStr() {System.out.println("A的静态属性初始化");return null;}private String getStr() {System.out.println("A的实例属性初始化");return null;}public static void main(String[] args) {new B();new B();}}class B extends A{private static String staticStr = getStaticStr();static {System.out.println("B的静态块");}{System.out.println("B的实例块");}public B() {System.out.println("B的构造方法");}
   private String str = getStr();private static String getStaticStr() {System.out.println("B的静态属性初始化");return null;}private String getStr() {System.out.println("B的实例属性初始化");return null;} }
复制代码

该段代码的执行结果为:

A的静态块
A的静态属性初始化
B的静态属性初始化
B的静态块
A的实例属性初始化
A的实例块
A的构造方法
B的实例块
B的实例属性初始化
B的构造方法
A的实例属性初始化
A的实例块
A的构造方法
B的实例块
B的实例属性初始化
B的构造方法

由此可见,实例化子类的时候,若此类未被加载过,首先加载是父类的类对象,然后加载子类的类对象,接着实例化父类,最后实例化子类,若此类被加载过,不再加载父类和子类的类对象。

接下来是加载顺序,当加载类对象时,首先初始化静态属性,然后执行静态块;当实例化对象时,首先执行构造块(直接写在类中的代码块),然后执行构造方法。至于各静态块和静态属性初始化哪个些执行,是按代码的先后顺序。属性、构造块(也就是上面的实例块)、构造方法之间的执行顺序(但构造块一定会在构造方法前执行),也是按代码的先后顺序。


 

例二:

复制代码
public class EXA {private static EXA a = new EXA();  static {  System.out.println("父类--静态代码块");  }  public EXA() {  System.out.println("父类--构造函数");  }  {  System.out.println("父类--非静态代码块");  }  public static void main(String[] args) {new EXC();new EXC();}
}class EXC extends EXA {  private static EXC b = new EXC();  static {  System.out.println("子类--静态代码块");  }  {  System.out.println("子类--非静态代码块");  }  public EXC() {  System.out.println("子类--构造函数");  }
}
复制代码

该段代码的执行结果为:

父类--非静态代码块
父类--构造函数
父类--静态代码块
父类--非静态代码块
父类--构造函数
子类--非静态代码块
子类--构造函数
子类--静态代码块
父类--非静态代码块
父类--构造函数
子类--非静态代码块
子类--构造函数
父类--非静态代码块
父类--构造函数
子类--非静态代码块
子类--构造函数

分析(非静态代码块即构造块):

首先要加载父类EXA,由于A的静态属性在静态块的前面,先初始化静态属性(new EXA())(父类--非静态代码块;父类--构造函数),然后是静态块(父类--静态代码块);

加载子类EXC,由于EXC的静态属性也在静态块的前面,先初始化静态属性(new EXC()),实例化子类对象的时候会先实例化父类,所以执行的顺序为(父类--非静态代码块;父类--构造函数;子类--非静态代码块;子类--构造函数),然后是静态块(子类--静态代码块)

实例化父类EXA对象:父类--非静态代码块;父类--构造函数;

实例化子类EXC对象:子类--非静态代码块;子类--构造函数;

第二个new EXC():因为父类和子类都已加载,只需依次实例化父类对象和子类对象(父类--非静态代码块;父类--构造函数;子类--非静态代码块;子类--构造函数;)

推测:若将EXA的静态块和静态属性的初始化换位置,执行结果应该为:

父类--静态代码块
父类--非静态代码块
父类--构造函数
父类--非静态代码块
父类--构造函数
子类--非静态代码块
子类--构造函数
子类--静态代码块
父类--非静态代码块
父类--构造函数
子类--非静态代码块
子类--构造函数
父类--非静态代码块
父类--构造函数
子类--非静态代码块
子类--构造函数

复制代码
public class EXA {static {  System.out.println("父类--静态代码块");  } private static EXA a = new EXA();public EXA() {  System.out.println("父类--构造函数");  }  {  System.out.println("父类--非静态代码块");  }  public static void main(String[] args) {new EXC();new EXC();}
}class EXC extends EXA {  private static EXC b = new EXC();  static {  System.out.println("子类--静态代码块");  }  {  System.out.println("子类--非静态代码块");  }  public EXC() {  System.out.println("子类--构造函数");  }
}
复制代码

运行发现,结果证实这样。

转载于:https://www.cnblogs.com/aligege/p/7600477.html

http://www.jmfq.cn/news/5153743.html

相关文章:

  • 平面设计包括什么/seo综合查询网站源码
  • 如何做电商网站视频/800元做小程序网站
  • 我做网站价格/重庆seo和网络推广
  • 杭州 seo网站建设 网络服务/网络销售的工作内容
  • 网站需要做实名认证如何做/建站模板哪个好
  • 做网站需要哪些资料/近期国际新闻
  • 做网站游燕/快速优化网站排名的方法
  • dede阿里百秀网站源码/百度我的订单查询
  • 网站开发公司好开发客户吗/百度云群组
  • 南阳企业网站建设公司/重庆seo推广外包
  • 网站充值页面模板/百度搜索一下
  • 网站建设武汉/企业网站优化服务公司
  • 试玩平台怎么做网站/泰安seo培训
  • 门户网站模板 免费/友情链接百科
  • 网站制作及实现/武汉网站推广优化
  • 如何用域名建网站/百度查询关键词排名工具
  • 主机屋怎么做网站/百度网页版 入口
  • 车工订单网站/信息流优化师需要具备哪些能力
  • 长沙哪个公司做网站/推手平台哪个靠谱
  • 石家庄网站建设推广公司报价/永久免费的电销外呼系统
  • 深圳做网站推广的公司/北京百度推广电话号码
  • 注册网站的步骤/哪有网页设计公司
  • 深圳网站制作价格/google seo怎么做
  • 天津做网站优化公司/百度加盟
  • 个人什么取消网站备案/实时排名软件
  • 平台网站做数据维护需要多久/百度平台商家客服
  • 中国做b2b最快是哪个网站/网络营销八大职能
  • 疏通下水道网站怎么做/saas建站平台
  • 怎么去除自己做的网站/免费行情软件网站下载
  • 建设项目所在地公共媒体网站/上海今天最新发布会