static 关键字

1、 static 修饰静态成员变量

 

使用 static 处理上述数据冗余,将重复数据保存到一个区域,需要时直接调用。

2、 static 关键字使用和特征分析

特征:

        1、static修饰的静态成员变量,不推荐使用类对象调用,推荐使用类名直接使用。类对象调用 Eclipse 工具提示警告,静态成员变量和类对象无关。【没有对象】

        2、静态成员变量无论通过哪一种手段修改,修改数据之后,所有使用对应数据的位置全部受到对应数据位置全部受到影响。静态成员变量对应当前【类】唯一,独一份。静态成员变量是一个共享资源,一处修改,处处受影响。

        3、静态成员变量在没有对象之前可以通过类名调用,在对象销毁后,依然可以通过该类名调用静态成员变量和类对象无关。【没有对象】      静态成员变量生存周期是早于类对象出现,晚于类对象销毁。

3、类加载问题

类加载:

        java中的类加载:

                1、JVM分析当前程序所有所需的   .class  字节码文件

                        目前程序需要  A.class  B.class  C.class , 其他的 D.class 不需要

                2、会根据当前程序的运行情况,分析每一个类应该执行的时间

                        流程:

                                        1、A执行

                                        2、B执行

                                        3、C执行

                3、对应类在执行之前,会将所有的static修饰的内容进行处理。

                        static 修饰静态成员变量

                                加载到内存的【数据区】,准备就绪,已具备数据存储和数据提供能力,并且独一份。

                        static 修饰静态成员方法

                                加载到内存的【方法区】,已经具备执行能力,所有和方法执行相关的内容全部准备就绪

                                                修饰符,返回类型,方法名,形式参数列表,方法体

                        static 修饰静态代码块

                                加载到内存的【方法区】,并且直接执行,有且只执行一次

                4、static 内容处理完毕之后,程序才可以运行。

4、 静态成员变量内存存储问题

内存:

        栈区:局部变量

        堆区:实例化对象、 数组

        方法区: 所有可以执行的代码都在方法区, .class 字节码文件都在内存的【方法区】

                        1、静态成员方法

                        2、成员方法

                        3、类型声明

静态成员变量在内存的【数据区】

        在程序加载过程中,程序执行之前,静态成员变量内存空间申请,数据类型确定,目前存储数据情况,都全部准备就绪,已经具备数据存储和数据提供能力。

        例如:开一个饭店。准备好的桌椅板凳已经是可以使用的了

【static 修饰的静态成员变量独一份,在类文件加载过程中,有且只执行一次】

5、static 修饰静态成员变量总结【重点】

1、存放空间

        静态成员变量存储于内存的【数据区】,属于公共区域

2、归属权问题

        静态成员变量属于当前类,和对象无关。【没有对象】

3、修改问题

        静态成员变量一处修改,从修改位置开始,之后的所有使用位置全部修改

4、使用权

        可以通过类名调用,也可以在类对象中使用。

        调用过程推荐使用类名,不推荐使用类对象【没有对象】

5、共享资源

        静态成员变量独一份,静态成员变量所有当前类的对象都可以使用,是一个公共资源

6、生存时间问题

        静态成员变量是随着类文件加载,已经在内存的数据区具备数据存储和数据提供能力,已经可以使用。此时没有实例化对象。当前对象被销毁之后,静态成员变量依然可以使用。程序退出之前,所有的对象会被 JVM 销毁,之后才会清理 static 修饰内容占用的空间问题。

        static 修饰的静态成员变量和类对象生存周期不同,与对象无关【没有对象】

6、static 修饰静态成员方法

格式:

        权限修饰符 static 返回值类型 方法名(形式参数列表) {
                  方法体;
        }

7、static 修饰静态成员方法特征总结

1. 静态成员方法推荐使用类名调用,不推荐使用类对象调用。因为静态成员变量和对象无关。【没有对象】

2. 静态成员方法不可以直接使用类内的非静态成员变量
    非静态成员变量需要类对象调用,和对象有绑定关系。静态成员方法中【没有对象】

3. 静态成员方法不可以直接使用类内的非静态成员方法
    非静态成员方法需要类对象调用,和对象有绑定关系。静态成员方法中【没有对象】

   tip:
       static 修饰方法,对应的大括号是一个静态区域,静态区域中不可以直接使用非静态内容。

4. 静态成员方法 在类文件加载阶段,加载到内存的【方法区】,已经具备执行能力,
    所有和方法执行相关的内容全部准备就绪 修饰符,返回值类型,方法名,形式参数列表,方法体

5. 静态成员方法和非静态成员方法执行哪一个效率高???
    成员方法执行需要实例化对象支持
        实例化对象过程
            1. 占用一定的时间
            2. 占用一定的内存空间
        当前程序执行完成
            1. 占用一定的时间进行销毁操作
            2. 销毁过程中也需要和内存直接有数据交互。
            
    静态成员方法执行有且只需要类名直接调用即可,没有类对象约束,节约了时间和空间

6. 静态成员方法常用于工具类使用
    工具箱 ==> 各种各样的工具

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值