温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Android代码块执行顺序分析总结

发布时间:2020-08-27 18:07:55 来源:脚本之家 阅读:106 作者:翻滚吧李博 栏目:移动开发

本文介绍了Android代码块执行顺序分析总结,分享给大家,具体如下:

子类、父类变量,代码块,以及构造方法的加载顺序,是我们在程序开发中时不时遇到的一个问题,也是比较容易混淆的。

基础准备:

  1. 变量: 成员变量(叫类变量、实例变量)和局部变量
  2. 方法: 成员方法和构造方法
  3. 代码块:普通代码块、构造代码块、静态代码块、同步代码块

测试的父类:

public class ParentClass {
  public static String name = "爸爸";
  public int age = 40;
  public ParentClass(){
    System.out.println("父类构造函数");
  }

  //非静态代码块
  {
    System.out.println("父类非静态代码块" + "---" + age);
  }

  //静态代码块
  static{
    System.out.println("父类静态代码块" + "---" + name);
  }
}

测试的子类:

public class ChildrenClass extends ParentClass{
  public static String name = "儿子";
  public int age = 15;
  public ChildrenClass(){
    System.out.println("子类构造函数");
  }
  {
    System.out.println("子类非静态代码块" + "---" + age);
  }

  static {
    System.out.println("子类静态代码块" + "---" + name);
  }

}

执行new ChildrenClass()结果:

Android代码块执行顺序分析总结

结果分析:

父类静态代码块执行前,父类静态变量就已经执行了。

父类非静态代码块执行前,父类非静态变量就已经执行了。

上面结论子类同理。

代码块执行顺序总结:

父类的静态成员变量—->父类静态代码块—->子类静态成员变量—->子类静态代码块—>父类非静态变量—->父类非静态代码块—->父类构造方法—->子类非静态变量—->子类非静态代码块—->子类构造方法。

另外关于代码块的总结:

  1. 在类第一次调用时,静态代码块只执行这一次。
  2. 静态代码块和静态方法只能调用静态变量;
  3. 非静态代码块和非静态方法可以调用任何(静态+非静态)变量。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持亿速云。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI