static关键字修饰下的静态变量和静态方法+单例模式

本文介绍了Java中`static`关键字的使用,包括静态变量和静态方法的概念与区别,静态块的作用,以及类的初始化顺序。此外,还探讨了单例模式,强调了构造方法的私有化以及单例模式的加载速度差异和线程安全问题。
摘要由CSDN通过智能技术生成

1.静态变量

首先静态变量与静态方法都保存在方法区中

静态变量: 使用static关键字定义的变量。static可以修饰变量和方法,也有static静态代码块。被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。

区别:

成员变量 局部变量 静态变量
定义位置 在类中,方法外 方法中,或者方法的形参 在类中,方法外
初始化值 有默认初始化值 无,需定义赋值后才能使用 有默认初始化值
调用方式 对象调用 方法中调用 对象调用,类名调用
存储位置 堆中 栈中 方法区
生命周期 与对象共存亡 与方法共存亡 与类共存亡
别名 实例变量 类变量

对于静态变量来说类名.[静态变量名]调用,不能通过this.[静态变量名]调用.

2.静态块 :

   	static{
          //	专门初始化静态变量
   }

3. 静态方法:被static修饰的方法

  • 静态方法中没有this引用
  • 静态方法只能访问静态变量

静态不能引用非静态这一特性,是由于静态的会随着类的定义而被分配和装载入内存中这一关键点决定的;如果静态引用了非静态的,根本无法从内存中找到非静态的代码段

4. 类的初始化顺序

class aprint {
   
    public aprint(
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值