java培训之代码块

什么是代码块

1. 什么是代码块

java培训

2.静态代码块

   一个类中初始化块若有修饰符,则只能被static修饰,称为静态代码块(static block ),当类被载入时,类属性的声明和静态代码块先后顺序被执行,且只被执行一次。

static块通常用于初始化static ()属性

class Person {

       public static int total;

       static {

               total = 100;//total赋初值

       }

       …… //其它属性或方法声明

 }

3. 非静态代码块

    概念:没有static修饰的代码块

       特点:

  • 可以有输出语句。
  • 可以对类的属性、类的声明进行初始化操作。
  • 可以调用静态的变量或方法。
  • 若有多个非静态的代码块,那么按照从上到下的顺序依次执行。
  • 每次创建对象的时候,都会执行一次。且先于构造器执行

4 静态和非静态关系

非静态的本质是什么

非静态也可以称为动态, 意思是确定的, 在程序中对象的创建是不确定的, 因为只要new就会产生对象, 所以非静态的概念必然是和对象相关的.

静态的本质是什么

静态的就是确定的, 唯一的, 在程序中是稳定的, 和有无对象无关, 也和有多少对象无关, 只和类相关, 所以, 所以静态成员是稳定并唯一的.

如何互相使用

在非静态环境中可以中直接使用静态成员, 因为在非静态环境中, 对象必然是已经创建了, 对象既然已经创建, 类也肯定已经加载过了, 所以在使用上并不会有问题.

但是 在静态环境中却不可以直接使用非静态成员, 因为静态成员可以使用, 不要求对象,只要求类加载好就可以了, 但是类加载, 并不意味着一定要创建对象, 并且对象创建在哪里也不知道. 所以在静态环境中不可以直接访问非静态成员, 因为非静态成员隶属于对象, 所以在静态环境中只能通过创建对象, 并再通过对象来间接访问非静态成员.

执行顺序

1. 创建对象时, 在同一个类中执行顺序

在同一个类中, 如果创建这个类的对象, 执行顺序是

静态属性声明

静态语句块或静态属性的显式初始化

非静态属性声明

非静态语句块或非静态属性的显式初始化

构造器

2. 创建对象时, 有继承关系存在时执行顺序

  1. 父类的静态属性声明
  2. 父类的静态语句块或父类静态属性的显式赋值
  3. 子类的静态属性声明
  4. 子类的静态语句块或子类静态属性的显式赋值
  5. 父类非静态属性的声明
  6. 子类非静态属性的声明
  7. 父类的非静态语句块或父类非静态属性的显式赋值
  8. 父类构造器
  9. 子类的非静态语句块或子类非静态属性的显式赋值
  10. 子类构造器

 


上一篇:
下一篇:
关于尚硅谷
教育理念
名师团队
学员心声
资源下载
视频下载
资料下载
工具下载
加入我们
招聘岗位
岗位介绍
招贤纳师
联系我们
电话:010-56253825
邮箱:info@atguigu.com
地址:北京市昌平区宏福科技园综合楼6层(北京校区)

 深圳市宝安区西部硅谷大厦B座C区一层(深圳校区)

上海市松江区谷阳北路166号大江商厦6层(上海校区)