Java关键字static静态详解

本文详细解释了Java中的static关键字,包括其修饰成员变量和方法的区别,静态代码块和单例设计模式的应用,以及作为工具类和代码块的特性。讨论了静态的内存原理和单例设计模式的实现及其好处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java关键字static静态详解

一、static修饰成员变量

Java中的成员变量按照有无static修饰分为两种:类变量、实例变量。它们的区别如下:

  • 类变量:有static修饰,属于类,在计算机里只有一份,会被类的全部对象共享
  • 实例变量(对象的变量):无static修饰,属于每个对象的。

由于静态变量是属于类的,只需要通过类名就可以调用:类名.静态变量

实例变量是属于对象的,需要通过对象才能调用:对象.实例变量

二、static修饰成员方法

成员方法根据有无static也分为两类:类方法、实例方法

  • 类方法:有static修饰的成员方法,属于类
  • 实例方法:无static修饰的成员方法,属于对象

有static修饰的方法,是属于类的,称为类方法;调用时直接用类名调用即可
无static修饰的方法,是属于对象的,称为实例方法;调用时,需要使用对象调用。

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

1.类方法:static修饰的方法,可以被类名调用,是因为它是随着类的加载而加载的;所以类名直接就可以找到static修饰的方法
2.实例方法:非static修饰的方法,需要创建对象后才能调用,是因为实例方法中可能会访问实例变量,而实例变量需要创建对象后才存在。所以实例方法,必须创建对象后才能调用。

三、static的注意事项

在这里插入图片描述

四、static应用1(工具类)

如果一个类中的方法全都是静态的,那么这个类中的方法就全都可以被类名直接调用,由于调用起来非常方便,就像一个工具一下,所以把这样的类就叫做工具类。

补充:
工具类里的方法全都是静态的,推荐用类名调用为了防止使用者用对象调用。我们可以把工具类的构造方法私有化。私有化构造方法,这样别人就不能使用构造方法new对象了

五、static应用2(代码块)

代码块根据有无static修饰分为两种:静态代码块、实例代码块

5.1 静态代码块

在这里插入图片描述

  • 静态代码块重点注意:静态代码块,随着类的加载而执行,而且只执行一次。

5.2 实例代码块

在这里插入图片描述
实例代码块的作用和构造器的作用是一样的,用来给对象初始化值;而且每次创建对象之前都会先执行实例代码块。

  • 对于实例代码块重点注意:实例代码块每次创建对象之前都会执行一次

六、static应用3(单例设计模式)

6.1 什么是设计模式

一个问题通常有n种解法,其中肯定有一种解法是最优的,这个最优的解法被人总结出来了,称之为设计模式。设计模式有20多种,对应20多种软件开发中会遇到的问题。关于设计模式的学习,主要学习这两个问题:

  1. 解决了什么问题?
  2. 怎么写?

6.2 单例设计模式

确保一个类只有一个对象。具体写法如下:

1、把类的构造器私有。
2、定义一个类变量记住类的一个对象。
3、定义一个类方法,返回对象。

// 单例类
public class A { 
// 2、定义一个类变量记住类的一个对象
private static A a = new A();
// 1、私有构造器
private A(){}
// 3、定义一个类方法返回对象
public static A getObject(){
return a;
 }
}

6.3 单例应用场景以及好处

应用场景包扩任务管理器对象、获取运行时对象等,在这些业务场景下,使用单例模式,可以避免浪费内存。根据不同的场景需求,单例设计模式的实现方式很多,例如

  • 饿汉式单例:拿对象时,对象早就创建好了。
  • 懒汉式单例:拿对象时,才开始创建对象。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值