当前位置: 首页 > news >正文

【java面向对象中static关键字】

提纲

  • static修饰成员变量
  • static修饰成员变量的应用场景
  • static修饰成员方法
  • static修饰成员方法的应用场景
  • static的注意事项
  • static的应用知识:代码块
  • static的应用知识:单例设计模式

static静态的意思,可以修饰成员变量,成员方法;

  • static修饰成员变量:
    1.有static修饰的成员变量叫做类变量;
    a.类名.变量名 (推荐这样进行调用);
    b.类变量与类一起加载一次,内存中只有一份,被所有对象共享;
    c.在本类中访问类变量可以省略类名,访问其他类的类变量不能省略;
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • static修饰成员变量的应用场景
    在开发中如果某个数据只需要一份,并且可以被共享(访问,修改),可以将其定义为类变量;

案例:

在这里插入图片描述
注意:在本类访问类变量可以省略类名,其他类中不可以;

  • static修饰成员方法
    static修饰成员方法叫做类方法;
    a.类方法可以使用类名直接调用(推荐调用方法);
    b.静态方法只能调用静态的方法;
    c.类方法中可以直接访问类成员,不能访问实例成员;
    d.实例方法中既可以访问类变量,也可以访问实例变量;
    e.实例方法中可以出现this关键字,类方法中不能出现this关键字;
    (静态方法中不能用this关键字,因为this是个引用,哪个对象调用方法就引用哪个对象。 而静态方法有可能不是被对象调用的,this无从引用。类方法是属于类本身的 所有对象共享 this表示当前实例的引用 静态方法中不能引用非静态实例成员);

  • 应用
    类方法常用于工具类(until)(为了防止创建对象浪费内存,其次为了方便调用)

- 扩展-工具类
a.工具类的方法都是类方法,方便调用,每个类方法用来完成一个功能;
b.类名见名知意,空参构造私有化;

  • static修饰代码块
    代码块是类的5大成分之一(成员变量、构造器、方法、代码块、内部类)

static修饰的代码块是静态代码块
格式:static { }
特点:类加载时自动执行,由于类只会加载一次,所以静态代码块也只会执行一次。
作用:完成类的初始化,例如:对类变量的初始化赋值。

实例代码块:
格式:{ }
特点:每次创建对象时,执行实例代码块,并在构造器前执行。
作用:和构造器一样,都是用来完成对象的初始化的,例如:对实例变量进行初始化赋值。

static的应用

设计模式(Design pattern) ?
一个问题通常有n种解法,其中肯定有一种解法是最优的,这个最优的解法被人总结出来了,称之为设计模式。
设计模式有20多种,对应20多种软件开发中会遇到的问题。
单例设计模式(确保类只有一个对象)

饿汉
把类的构造器私有。
定义一个类变量记住类的一个对象。
定义一个类方法,返回对象。
在这里插入图片描述
懒汉

class RunTime{//1.私有化的空参构造private RunTime(){}//2.类变量记录一个对象,不做初始化private static RunTime runTime;//3.定义一个类方法,判断返回值public static RunTime getObiect(){if(runTime == null){runTime = new RunTime();}return runTime;}}
http://www.lryc.cn/news/122154.html

相关文章:

  • 系统学习Linux-Redis集群
  • 【每日随笔】帝王心术 ② ( 如何培养下一代 | 重点培养孩子某一项特长 | 价值观培养 | 独立思考 | 人性和谋略教育 | 资源传承 | 人生指引 )
  • Git简介
  • STM32入门学习之定时器输入捕获
  • 贪心算法:基础入门篇
  • 【Windows10下启动RocketMQ报错:找不到或无法加载主类 Files\Java\jdk1.8.0_301\lib\dt.jar】解决方法
  • 深入篇【Linux】学习必备:进程理解(从底层探究进程概念/进程创建/进程状态/进程优先级)
  • Python 潮流周刊#15:如何分析 FastAPI 异步请求的性能?
  • 基于Java+SpringBoot+Vue的网吧管理系统设计与实现(源码+LW+部署文档等)
  • redis设置database 不生效剖析
  • 汽车及汽车零部件行业云MES解决方案
  • 算法工程师-机器学习面试题总结(4)
  • Linux学习之awk函数
  • Redis的数据结构到底是一种什么样的结构?
  • eclipse 导入项目js报错问题
  • 《HeadFirst设计模式(第二版)》第七章代码——外观模式
  • 前端杂项-个人总结八股文的背诵方案
  • 利用 3D 地理空间数据实现Cesium的沉浸式环境
  • 微服务——ES实现自动补全
  • 北斗+5G 织就精确定位的“天罗地网”
  • Ansible Roles详解
  • 微服务学习笔记-基本概念
  • Linux查看GPU显卡/CPU内存/硬盘信息
  • SQLAlchemy 入门:Python 中的 SQL 工具包和 ORM
  • react Hook+antd封装一个优雅的弹窗组件
  • HICP学习--BGP综合小实验
  • grafana中利用变量来添加dashboard详情页地址实现点击跳转
  • 正则表达式练习
  • leetcode做题笔记73矩阵置零
  • 【2.1】Java微服务: Nacos的使用