zoukankan      html  css  js  c++  java
  • static

    1、static 变量

      模拟学生类 ,给学生分配教室,每创建一个对象,就会出现一个单独的教室,不符合实际情况,不利于后期的维护和更改
      解决:static关键字

    • 内存分配图

      • static 变量存储在方法区中
      • 所有的Student对象都共用同一个classRoom变量
    • 静态变量和非静态变量的定义

      •  static String classRoom;静态变量   类变量   一个类所有的对象公用一个static变量
      •  String name;int age;String sex;非静态变量    对象变量(实例变量) 一个类的每个对象都有单独的对象变量
    •  静态变量和非静态变量的比较

      •  共同点
        •  都是变量
        •    都是成员变量
        •    能使用static修饰局部变量
      •   区别:
        •  1.存储位置不同
          •   静态变量 :方法区
          •   非静态变量:堆中
        •  2.份数不同
          •    静态变量 :1份
          •    非静态变量:1个对象1份
        •  3.调用方式不同
          •  静态变量 :通过类名调用  Student.classRoom
            •  通过对象名调用 stu1.classRoom    不推荐
          •   非静态变量:
            •  通过对象名调用  stu1.name="小张张";
        •  4.内存分配空间的时间不同
          •  静态变量 :第一次加载类的时候
          •  非静态变量:创建对象的时候

    2、static方法

      模拟学生类 ,给学生分配教室,每创建一个对象,就会出现一个单独的教室,不符合实际情况
      解决:static关键字 修饰的方法

    总结1:static方法的作用

    •   访问static方法和static成员变量(静态变量)

    总结2:static方法的调用方式

    •  1.通过类名调用   Student.showroom();  推荐该方式
    •   2.通过对象名来调用   stu1.showroom(); 

    总结3:不可以

    •  静态方法中不可以访问非静态变量
    •  静态方法中不可以访问非静态方法
    •  静态方法中不可以访问this
    •  理解:加载类的时候加载静态变量和静态方法,此时可能还没有创建对象,所以非静态变量和静态方法还没有分配空间, 所以无法访问

     总结4:可以

    •  非静态方法中可以访问静态变量
    •  非静态方法中可以访问静态方法
    •  理解:加载类的时候加载静态变量和静态方法,创建对象后,非静态变量和非静态方法就分配空间,此时静态变量和静态方法已经存在,所以可以访问

    3、static代码块

    总结1:局部代码块

       *      1.位置:方法中

       *      2.数量:多个

       *      3.执行顺序:依次执行

       *      4.局部代码块中定义的变量作用范围只限于当前的代码块

     总结2:(成员)代码块

       *      1.位置:类中

       *      2.数量:多个

       *      3.执行顺序:依次执行

       *      4.执行时间:每次创建对象的时候都执行;先执行代码块,再执行构造方法

       *      5.作用:实际开发中几乎不用

         *          可以将各个构造方法中相同的代码提取到代码块

         *          匿名内部类不能够提供构造方法,此时初始化操作可以将其放到代码块中

     总结3:static代码块 

       *       1.位置:类中

       *       2.数量:多个

       *       3.执行顺序:依次执行

       *       4.执行时间:第一次加载类的时候执行,且只执行一次

       *       5.作用:实际开发中很常用

         *            一般用于执行一些全局性的初始化操作。

         *            加载数据库初始信息

     * 总结4:类的成员

       *    1.成员变量

       *    2.成员方法

       *    3.构造方法 

       *    4.代码块

       *    5.静态代码块

       *    6.内部类(知道即可,不是重点,不需要花费精力)

     

    作者: 莯汐

    出处: < http://www.cnblogs.com/Eileen-lu/>

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在页面明显位置给出原文链接。

  • 相关阅读:
    百度云 shadow-root 内的video 倍速播放
    记一次临摹百度登录界面
    es6 函数的扩展
    01-let和const.html
    selenium 禁止加载图片 css js
    前端小知识(11)--js数组方法
    前端小知识(10)--js深拷贝
    算法系列(1)--广度优先遍历和深度优先遍历
    前端小知识(9)--选择器
    前端小知识(8)--BFC
  • 原文地址:https://www.cnblogs.com/Eileen-lu/p/9152188.html
Copyright © 2011-2022 走看看