首页 > 代码库 > static修饰符与final修饰符

static修饰符与final修饰符

■ static修饰符与final修饰符:
   ★ static修饰符:
    1. 修饰的对象:
      类中的成员(属性[静态变量或类变量]和方法[静态方法或类方法])
    2. 静态属性的特点:
      1. 静态变量被所有对象共享
      2. 随着类的加载而加载,随着类的消失而消失,和对象的创建无关
      3. 可以直接被类名调用
    3. 静态方法的特点:
      1. 静态方法优先于对象存在,在静态方法中无法访问与对象相关的实例变量(这时候对象还没有创建,其属性也就没有)
      2. 静态方法无法访问实例变量
      3. 静态方法可以访问静态变量
      4. 实例方法可以访问静态变量
      5. 静态方法无法访问实例方法
      6. 静态方法只能访问静态方法或静态变量,无法访问非静态
      7. 实例方法可以访问静态(属性和方法)和非静态(属性和方法)
      8. 静态方法无法访问this,super(this,super是属于对象的)
      9. 使用子类可以访问父类中的静态方法和静态变量
    4. 静态变量与实例变量的区别:
      1. 所属区域不同
        静态变量: 静态变量属于类
        实例变量: 实例变量属于对象
      2. 调用的方式不同
        静态变量: 可以被类名调用,也可以使用对象调用
        实例变量: 只能被对象调用
      3. 存储的位置不同
        静态变量: 存储在方法区
        实例变量: 存储在堆中
      4. 加载顺序
        静态变量: 随着类的加载而加载,随着类的消失而消失,和对象的创建无关
        实例变量: 随着对象的创建而创建,随着对象的销毁而销毁
      5. 如何使用静态方法和实例方法:
        1. 如果方法中不需要访问类中的属性(实例变量),那么就可以把方法定义为静态的,方便使用
        2. 如果方法中需要访问类中的属性(实例变量),那么就必须方法定义为非静态的
      6. 静态代码块:
        1. 语法:
          技术分享

        2. 当类第一次被加载到内存时,会在最后调用静态代码块且只调用一次
      7. 构造代码块
        1. 语法:
         技术分享

        2. 构造代码块创建对象的时候调用,在构造代码块写一些构造器中的共性,

          会在构造器中最先调用构造代码块,后执行自定义初始化
        3. 创建对象时做的事情:
          1. 先看类是否加载,如果类是第一次使用会加载类
          2. 接着加载类中的静态成员
          3. 调用静态代码块
        4. new:
          1. 在内存中为对象分配空间
          2. 确定对象的首地址
          3. 为实例变量进行默认初始化
          4. 如果有显示初始化,在进行显示初始化
        5. 调用构造器
          1. 调用父类的空参构造器super()
          2. 调用构造代码块
          3. 执行自定义初始化


  ★ final修饰符: 修饰类,方法,属性,局部变量
    1. 当修饰方法时,被final修饰的方法称为最终方法,不能重写
    2. 当修饰类时,被final修饰的类是最终类,不能被继承,例如: String
    3. 被final和static修饰的变量(此时称之为常量)的名字要大写

static修饰符与final修饰符