static 静态的

    1.可以修饰什么?
    2.修饰后有什么特点?

    1.修饰属性 修饰方法 *修饰块 修饰内部类
    2.特点:
    2.1 静态元素在类加载时就初始化了 创建的非常早 创建时只有类 还没有创建对象
    2.2 静态元素存储在静态元素区中 每一个类有自己的区域 与别的类不冲突
    2.3 静态元素只加载一次(只有一份) 类的全部对象及类本身共享
    2.4 由于静态元素区加载的时候 有可能没有创建对象 它可以通过类名字直接访问 也可以用对象调用
    2.5 可以理解为静态元素不属于任何一个对象 和对象没有关系 属于类
    而局部变量的作用域只能在它所属的{ }里 所以不能用static修饰变量
    2.6 内存管理 (栈内存创建开始用完即回收 堆内存通过GC Garbage Collection回收)
    静态元素区GC无法管理 可以粗暴地认为常驻内存
    2.7 非静态成员(堆内存对象里)中可以访问静态成员(静态区)
    2.8 静态成员中可以访问静态成员(都存在静态区里)
    2.9 静态成员不可以访问非静态成员
    从个数上来说 一个出发访问一堆相同的名字 分不清
    从所属的范畴上 静态元素属于类 非静态成员属于对象自己的
    2.10 静态成员中不可以出现this或super关键字
    (this代表的是当前调用方法或属性的对象 静态成员在类创建时就有了 和对象没什么关系 静态成员属于类 静态成员没有对象也能调用 )

    static.png

    1. package teststatic;
    2. public class Person {
    3. public String name;
    4. public static int age;
    5. public void test() {
    6. System.out.println("我是普通方法" + Person.age);
    7. //非静态成员也可以访问静态成员
    8. }
    9. public static void testStatic(){
    10. System.out.println("我是静态方法");
    11. //静态元素中不可以出现this或super关键字
    12. }
    13. public static void main(String[] args){
    14. Person p = new Person();
    15. p.name = "小明";
    16. p.age = 18;
    17. Person p1 = new Person();
    18. p1.name = "小兰";
    19. p1.age = 16;
    20. System.out.println(p.name+"今年"+p.age+"岁");
    21. System.out.println(p1.name+"今年"+p1.age+"岁");
    22. }
    23. }

    书店买书

    1. package teststatic;
    2. public class BookStore {
    3. private static final int BOOKSTORE_ADMIN = 0;//静态常量
    4. private static final int BOOKSTORE_VIP = 1;
    5. private static final int BOOKSTORE_NORMAL = 2;
    6. public void buyBook(int price,int identity){
    7. switch (identity){
    8. case BookStore.BOOKSTORE_ADMIN:
    9. System.out.println("尊敬的管理员,您本次购买的书籍价格为"+price*0.5);
    10. case BookStore.BOOKSTORE_VIP:
    11. System.out.println("尊敬的VIP用户,您本次购买的书籍价格为"+price*0.8);
    12. case BookStore.BOOKSTORE_NORMAL:
    13. System.out.println("尊敬的用户,您本次购买的书籍价格为"+price);
    14. default:
    15. System.out.println("对不起,系统查询不到您的身份信息,请重新输入");
    16. }
    17. }
    18. }