zoukankan      html  css  js  c++  java
  • 大数据学习--day09(this、static)

    this、static

    this 关键字

    类不可以定义 this 属性 ,  但是每个类都有一个 隐藏起来的 this 属性  .
    每个对象被创建了 , 都会给其属性分配空间  , 也会给 this 属性 分配  , 并且给其存储了一个值
    该值是当前对象本身的地址。
    this 始终指向当前对象本身  .
    this 有三个作用  和 一个注意点
    作用 : 
        this([实参]); 这种格式可以在构造器中 调用本类的其他构造器.
                    this([实参]);必须位于第一行
        this.属性 ;
                这种用法可以 区别成员变量  和 局部变量
     
        this.方法
                这种用法可以  调用当前对象的方法
                但是实际上 不用 this  和 使用 this  没有任何区别
            
    一个注意点 :
        this 不能出现在  static 修饰的方法  和  代码块中
        因为是 static 加载机制的问题
     
     

    static 关键字

     
        static 是静态修饰符 , 可以修饰  属性 方法 代码块 类(内部类)
        static 修饰的元素 都会具有  static 的特性
        
        特性 1
            静态的元素 优先被加载到内存    
            当某个类被使用时  , 会先把这个类加载到 jvm 内存里 , 
            先加载该类的静态成员,然后再加载非静态的元素 .
            静态的元素 优先被加载 , 在静态元素加载的时候  , 此时内存里还不会有 非静态元素  .

        特性 2
            静态的元素 只被加载一次   
        
        特性 3
            静态的元素 不依附对象  , 静态的元素 依附于 类  .

        特性 4 
            静态的成员 在内存里永久存在  不会消失
     
     
    使用 :
            static 修饰属性
                1. 不依附对象  可以直接使用   
                    普通属性在对象创建受分配空间
                    静态属性 在类加载就分配空间了
                    
                2. 只加载一次  
                    普通的成员  加载多次  每创建一次就加载 
                    而静态的成员  只会加载一次   
     
         static 不可以修饰局部变量  因为冲突
                    局部变量 在方法调用时 分配空间      方法结束时回收空间
      static 修饰方法
                只加载一次  不依附对象  依附于类
                使用方式
                    1. 类名.方法名 (推荐使用)
                    2. 对象.方法名 
                    
                static 修饰的方法 又叫静态方法  类方法
                
                静态方法只能访问静态的成员  
                非静态方法 可以访问静态的成员  也可以访问非静态成员
     代码块: 一对大括号就是代码块
       在方法之外的代码块  何时可以执行呢  ?
                在构建对象时 可以执行
                构建一次对象 执行一次
                它在构造器之前执行      
            代码块没有数量限制  ,     执行时按照顺序执行
            属性的声明且赋值 是会被拆分成  声明  + 代码块赋值
      static 修饰代码块
                又称静态代码块
                优先加载  只加载一次 

                只能访问静态元素  不能访问非静态元素

     
     
  • 相关阅读:
    使用shell脚本备份PostgreSql
    java使用stream做二维数据统计,把List<Map>转换为Map<String,Map<String,Integer>>
    使用idea构建JavaFX项目
    SpringBoot(三) ---- SpringBoot启动加载器
    idea设置大全(三)------变量高亮设置
    延迟初始化占位类模式
    ThreadPoolExecutor构造参数分析
    postgresql插入或批量插入出现冲突时的处理方法
    java函数式接口
    MyBatis(二)批量插入insert语句拼接方式
  • 原文地址:https://www.cnblogs.com/symkmk123/p/9675394.html
Copyright © 2011-2022 走看看