美文网首页
JavaSE 进阶(static)

JavaSE 进阶(static)

作者: 扶光_ | 来源:发表于2023-07-24 17:23 被阅读0次

一,static是什么

  • static是静态的意思,可以修饰成员变量和方法
    static修饰的成员变量表示该成员变量只在内存中存储一份,可以被共享访问、修改(所以一般前面就用public修饰 而不是private修饰 既然是共享就得公开 )而private修饰的只可以在本类访问
    举例;如在线人数信息,就可以用static修饰共享访问
  • 静态成员变量(存在于类中,内存中加载一次)
    public static String onlineNumber = 465;
    类名.静态成员变量访问(User.onlineNumber ) 优化性能 简洁方便 不用直接从类到对象再到成员变量 直接从类访问到成员变量

内存机制
static修饰的成员变量和方法,会和类优先加载到堆内存(变量)和方法区(方法)


  • 实例成员变量(存在于对象中)
    private String name;
    访问 对象.成员变量名
  • static成员方法
    1 public void run(){Sysmet.out.println("快");}
    2 public static void run(){Sysmet.out.println("快");}
    上面两种方法有什么不同
    静态成员方法(归属于类) ,直接类名访问
    实例成员方法(属于方法) ,只能对象访问

表示对象自己的行为,且方法中需要直接访问实例成员,则方法必须是实例方法
如果该方法是以执行一个共用功能为目的,则可以声明成静态方法

  • static 注意事项
    1 静态方法只能访问静态的成员,不可以直接访问实例成员(只能用对象来访问实例成员)
    2 实例方法可以访问静态的成员,也可以访问实例成员
    3 静态方法中不可以出现this关键字(因为是归属于类不属于那个对象调用)

二,static应用 工具类

工具类: 都是一些静态方法每个方法都是以完成一个共用的功能为目的这个类用来给系统开发人员共同使用的
比如开发一个验证的方法,那么在这个项目中很多地方都需要用到这个方法,所以同一个功能会出现重复度过高,使用工具类
工具类会把验证码这个功能抽离出来生成一个静态方法,写一次就可以了.

其实此功能也可以用实例方法去做 但是实例方法每次都需要创建对象,此时用对象只是为了调用方法而已,如果100个调用这个方法那么在堆内存中就需要创建100个对象 这样只会浪费内存

工具类不需要创建对象,直接将工具类进行私有 所以在类中添加一个private 类名的私有构造器

image.png

三、Static代码块

就是用static{} 大括号里面的就是代码块
优点:会和类优先加载,自动触发,只执行一次


image.png
image.png

所以是静态代码块先加载,类先加载然后再加载类中的方法。

用法:可以用于初始化静态的资源

  • 构造(实例)代码块
    { }就是一个大括号里面的代码
    属于对象,每次构建对象时触发,在构造器执行前执行
    初始化实例资源 (一般在开发中用不到)

  • 应用案例
    如我们在玩斗地主游戏时,应在游戏开始之前就准备好54张扑克牌

分析:
1.只需要一副牌,所以定义一个静态的ArrayList集合存储,静态集合只存储一份
2 启动游戏房间前,应把54牌初始化好,所以用静态代码块完成


四,设计模式

什么是设计模式呢?
开发中经常遇到一些问题,一个问题通常有n中解法,但其中肯定有一种是最优解,所以我们把这种解法称设计模式

  • 设计模式有20多种

  • 学设计模式主要就是学解决什么问题,以及遇到这种问题该模式是怎么写的

  • 单例模式就是其中一种模式
    单例:应用该模式的这个类永远只有一个实例,即一个类只能创建一个对象
    如我们电脑上的任务管理器,,无论我们启动多少次那么他的页面始终只有一个,因为一个页面就可以解决所有问题

  • 可以节省内存,因为对象创建的越多越占内存

  • 1 饿汉单列设计模式

在用类获取对象的时候,对象已经提前为你创建好了

首先要将构造器私有化,如果不私有对外就可以无限创建对象
但还有对外提供一个对象
所以定义一个static变量存储对象


image.png
  • 懒汉单例设计模式

只需要该对象的时候,才去创建这个对象

image.png

相关文章

  • 13.面向对象进阶—静态关键字static

    面向对象进阶 静态关键字static static关键字的作用,修饰成员变量的用法 static是静态的意思,可以...

  • JavaSE进阶七 异常

    1,异常机制 什么是异常,java提供异常处理机制有什么用?以下程序执行过程中发生了不正常的情况,而这种不正常的情...

  • JavaSE进阶一 接口

    Java语言中的抽象类 类到对象是实例化,对象到类是抽象类。 什么是抽象类?类和类之间具有共同特征,将这些共同特征...

  • JavaSE进阶三 数组

    数组的定义 1,java语言中的数组是一种引用数据类型,不属于基本数据类型。数组的父类是Object。 2,数组是...

  • JavaSE进阶四 String

    String -字符串常量池 Java SDK中内置的一个类:java.lang.String String表示字...

  • JavaSE进阶十 线程一

    1,关于线程的概述 什么是进程?什么是线程?进程是一个应用程序。线程是一个进程中的执行场景/执行单元;一个进程可以...

  • JavaSE进阶十 线程二

    死锁 什么是死锁 死锁是指两个或两个以上的线程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若...

  • JavaSE进阶-02-数组

    数组(Array)特性:1.Java语言中的数组是一种引用数据类型,不属于基本数据类型。数组的父类事Object。...

  • JavaSE进阶-03-算法

    算法实际上在Java中不需要精通,因为Java已经封装好了。例如Java中提供了一个数组工具类:java.util...

  • JavaSE进阶五 包装类

    java中的包装类 java中对8种基本数据类型提供了8种包装类型;包装类是引用类型,父类是Object。 为什么...

网友评论

      本文标题:JavaSE 进阶(static)

      本文链接:https://www.haomeiwen.com/subject/obmzudtx.html