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/>

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

原文地址:https://www.cnblogs.com/Eileen-lu/p/9152188.html