zoukankan      html  css  js  c++  java
  • static修饰符与final修饰符

    1、final修饰符: 修饰类,方法,属性,局部变量


    • 当修饰方法时,被final修饰的方法称为最终方法,不能重写
    • 当修饰类时,被final修饰的类是最终类,不能被继承,例如: String
    • 被final和static修饰的变量(此时称之为常量)的名字要大写

    2、static修饰符


    2.1修饰的对象:

    • 类中的成员(属性[静态变量或类变量]和方法[静态方法或类方法])
    • 静态属性的特点:
      • 静态变量被所有对象共享
      • 随着类的加载而加载,随着类的消失而消失,和对象的创建无关
      • 可以直接被类名调用
    • 方法的特点:
      • 静态方法优先于对象存在,在静态方法中无法访问与对象相关的实例变量(这时候对象还没有创建,其属性也就没有)
      • 静态方法无法访问实例变量
      • 静态方法可以访问静态变量
      • 实例方法可以访问静态变量
      • 静态方法无法访问实例方法
      • 静态方法只能访问静态方法或静态变量,无法访问非静态
      • 实例方法可以访问静态(属性和方法)和非静态(属性和方法)
      • 静态方法无法访问this,super(this,super是属于对象的)
      • 使用子类可以访问父类中的静态方法和静态变量

    2.2静态变量与实例变量的区别:

    • 所属区域不同
      • 静态变量: 静态变量属于类
      • 实例变量: 实例变量属于对象
    • 调用的方式不同
      • 静态变量: 可以被类名调用,也可以使用对象调用
      • 实例变量: 只能被对象调用
    • 存储的位置不同
      • 静态变量: 存储在方法区
      • 实例变量: 存储在堆中
    • 加载顺序不同
      • 静态变量: 随着类的加载而加载,随着类的消失而消失,和对象的创建无关
      • 实例变量: 随着对象的创建而创建,随着对象的销毁而销毁
    • 如何使用静态方法和实例方法:
      • 如果方法中不需要访问类中的属性(实例变量),那么就可以把方法定义为静态的,方便使用
      • 如果方法中需要访问类中的属性(实例变量),那么就必须方法定义为非静态的
    • 静态代码块:
      • 语法:

          

      • 当类第一次被加载到内存时,会在最后调用静态代码块且只调用一次
    • 构造代码块
      • 语法:

          

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

    阅罢此文,如果您觉得本文不错并有所收获,请【打赏】或【推荐】,

    也可【评论】留下您的问题或建议与我交流。 
    你的支持是我不断创作和分享的不竭动力!

     

    作者:寒冰雪
    出处:https://home.cnblogs.com/u/snow1234/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,
    且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。
  • 相关阅读:
    PossibleOrders TopCoder
    505C Mr. Kitayuta, the Treasure Hunter
    p2257 YY的GCD
    浅谈莫比乌斯反演
    Hive基础(3)---Fetch Task(转)
    Hive基础(2)---(启动HiveServer2)Hive严格模式
    mysql 命令行参数
    Hive基础(1)---Hive是什么
    mybatis运行时错误Illegal argument exception argument type mismatch
    【TOMCAT启动异常】The BASEDIR environment variable is not defined correctly
  • 原文地址:https://www.cnblogs.com/snow1234/p/7191726.html
Copyright © 2011-2022 走看看