一,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 类名的
私有构造器

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


所以是静态代码块先加载,类先加载然后再加载类中的方法。
用法:可以用于初始化静态的资源
- 构造(实例)代码块
{ }就是一个大括号里面的代码
属于对象,每次构建对象时触发,在构造器执行前执行
初始化实例资源 (一般在开发中用不到)
- 应用案例
如我们在玩斗地主游戏时,应在游戏开始之前就准备好54张扑克牌
分析:
1.只需要一副牌,所以定义一个静态的ArrayList集合存储,静态集合只存储一份
2 启动游戏房间前,应把54牌初始化好,所以用静态代码块完成
四,设计模式
什么是设计模式呢?
开发中经常遇到一些问题,一个问题通常有n中解法,但其中肯定有一种是最优解,所以我们把这种解法称设计模式
-
设计模式有20多种
-
学设计模式主要就是学解决什么问题,以及遇到这种问题该模式是怎么写的
-
单例模式就是其中一种模式
单例:应用该模式的这个类永远只有一个实例,即一个类只能创建一个对象
如我们电脑上的任务管理器,,无论我们启动多少次那么他的页面始终只有一个,因为一个页面就可以解决所有问题 -
可以节省内存,因为对象创建的越多越占内存
-
1 饿汉单列设计模式
在用类获取对象的时候,对象已经提前为你创建好了
首先要将构造器私有化,如果不私有对外就可以无限创建对象
但还有对外提供一个对象
所以定义一个static变量存储对象

- 懒汉单例设计模式
只需要该对象的时候,才去创建这个对象

网友评论