Java中Static基础知识点,只看这一篇就够了

static的作用

static是静态的意思,可以修饰成员变量和成员方法。
static修饰成员变量表示该成员变量只在内存中只存储一份,可以被共享访问、修改
在这里插入图片描述

static修饰成员变量的用法

成员变量分为两种

  1. 静态成员变量(有static修饰,属于类,内存中加载一次): 常表示如在线人数信息、等需要被共享的信息,可以被共享访问
  2. 实例成员变量(无static修饰,存在于每个对象中):常表示姓名name、年龄age、等属于每个对象的信息

static修饰成员变量的内存原理

在这里插入图片描述
第一步,会加载类到方法区,并且同时将静态成员变量也加载到堆内存中。此时是不加载普通成员变量的,因为普通成员变量是隶属于对象级别的,只有创建了对象才可以生成普通成员变量。
第二步,当代码中有类名直接打点调用静态成员变量时候,直接到堆内存中找就行。
第三步,当new对象的时候,此时栈内存中会有一个地址,同时堆内存中也会开辟一块空间给对象,当然,静态成员变量也是可以通过对象打点调用的,只不过不推荐。

static修饰成员方法的基本用法

成员方法的分类

  1. 静态成员方法(有static修饰,属于类),建议用类名访问,也可以用对象访问。
    表示对象自己的行为的,且方法中需要访问实例成员的,则该方法必须申明成实例方法。
  2. 实例成员方法(无static修饰,属于对象),只能用对象触发访问。
    如果该方法是以执行一个通用功能为目的,或者需要方便访问,则可以申明成静态方法。

static修饰成员方法的内存原理

在这里插入图片描述
静态方法最初就加载到了方法区了,普通方法没有是因为普通方法隶属于对象级别的。当类名打点调用方法时候,直接就可以找到方法,同时也是可以通过对对象打点调用的。

static实际应用案例:定义工具类

  1. 工具类中定义的都是一些静态方法,每个方法都是以完成一个共用的功能为目的。
  2. 工具类的好处:一是调用方便,二是提高了代码复用
  3. 为什么工具类中的方法不用实例方法做?
    实例方法需要创建对象调用,此时用对象只是为了调用方法,这样只会浪费内存。
  4. 建议将工具类的构造器进行私有,工具类无需创建对象。
  5. 里面都是静态方法,直接用类名访问即可。

static应用知识:代码块

  1. 代码块概述
    代码块是类的5大成分之一(成员变量、构造器,方法,代码块,内部类),定义在类中方法外。
    在Java类下,使用 { } 括起来的代码被称为代码块 。
  2. 代码块分类
    在这里插入图片描述
  3. 静态代码块的作用
    如果要在启动系统时对静态数据进行初始化。
    建议使用静态代码块完成数据的初始化操作,代码优雅。

总结

不管是static修饰的成员变量还是成员方法,都是隶属于类级别的,都是可以实现共享的,相反的是隶属于对象级别的,根据不同的场合做出不同的选择。

猜你喜欢

转载自blog.csdn.net/qq_52077949/article/details/123569349