Java static final 常量详解

1. static

可以用来修饰

  1. 成员变量——类变量
  2. 成员方法——类方法
  3. 内部类——静态内部类,不能修饰普通类

因为由static修饰,均存在方法区中。

1.1 类变量

修饰变量时,变量属于类,不属于实例对象,直接使用  类名.变量名  调用。

具体应用为:某数据此类只需要一份,且希望能被共享

例如:SpringBoot开发中的日志类,一般用public static final 修饰。

1.2 类方法

修饰方法时,方法属于类,直接使用  类名.方法名  调用,不需要构建实例对象。

具体应用为工具类。大多用public static ...

需注意类方法中只能访问外部的静态数据,且不能用this

1.3 静态内部类

修饰内部类时为静态内部类,创建静态内部类对象不能直接  new Inner()  创建,需要 new Outer.Inner() 这样创建。

需要注意静态内部类中只能访问外部类的静态数据。外部类可以访问静态内部类所有数据。

1.4 static应用:单例模式(复习)

单例模式主要解决以下问题:

  1. 资源利用率:当类需要频繁地创建和销毁实例时,尤其是在资源消耗较大的情况下(例如数据库连接、文件系统操作等),单例模式可以保证在整个应用程序中只存在一个实例,从而避免了因多次实例化带来的资源浪费。

  2. 全局状态共享与管理:在某些场景下,可能需要所有对象都共享同一份数据或状态,或者对某个关键服务的访问必须是全局唯一的。通过单例模式,可以提供一个全局访问点,确保所有的对象都使用同一份资源或访问同一个服务。

  3. 控制实例数目:单例模式强制限制了类只能有一个实例,这样设计者就可以严格控制那些需要唯一实例的对象的创建过程,防止无节制的实例化导致的问题。

  4. 一致性保证:对于一些要求在整个应用范围内状态保持一致性的组件,如缓存、配置信息容器等,采用单例模式能够确保无论从何处获取该组件都是同一个实例,进而维护了数据的一致性。

  5. 线程安全问题:在多线程环境中,如果不采取措施可能会有多个线程同时创建单例对象,破坏单例原则。因此,实现单例模式时通常会考虑线程安全问题,确保无论何时何地,即使是并发环境下,也能保证只有一个实例被创建和使用。

总结一下就是

  1. 想要控制某个实例的数量,来解决资源浪费,无节制实例化,一致性等问题。
  2. 想保证所有对象共用一份数据,或者要求某个服务是全局唯一的。

1.4.1 三种饿汉式

a.静态变量方式()
public class Singleton1 {

    //私有构造方法
    private Singleton() {}
    //私有静态成员变量
    private static final Singleton1 singleton1 = new Singleton();

    //对外提供访问方法
    public static Singleton getInstance() {
        return singleton1
    }

}

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NEUMaple

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值