一、工具类
1.类中都是一些静态方法,每个方法都是以完成一个共用的功能为目的,这个类用来给系统开发人员共同使用的。
2.例如:在企业的管理系统中,通常需要在一个系统的很多业务处使用验证码进行防刷新等安全控制。但是同一个功能多处开发,会出现代码重复度过高。这时候就需要使用static来创建一个工具类给系统开发人员共同使用
package Statics;
import java.util.Random;
public class ToolClass {
public static void main(String[] args) {
String S1=new String("qwertyuioplkjhgfdsazxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM1234567890");
String code="";
Random random=new Random();
for (int i=0;i<5;i++){
int index=random.nextInt(S1.length());
code+= S1.charAt(index);
}
System.out.println(code);
}
}
3.好处:一是调用方便,二是提高了代码复用(一次编写,处处可用)
4.为什么工具类中的方法不用实例方法做?
实例方法需要创建对象调用。
此时用对象只是为了调用方法,这样只会浪费内存。
5.
由于工具里面都是静态方法,直接用类名即可访问,
因此,工具类无需创建对象,建议将工具类的构造器进行私有。
二、单例模式
1.定义一个单例类 2.定义一个静态变量存储一个对象即可 :属于类,与类一起加载一次 3.单例必须私有构造器
package Statics;
public class SingleInstance {
/*
* 单例模式:
* 1.定义一个单例类
*2.定义一个静态变量存储一个对象即可 :属于类,与类一起加载一次
* 3.单例必须私有构造器
* */
public static SingleInstance s1=new SingleInstance();
private SingleInstance(){
}
}
class FG{
public static void main(String[] args) {
SingleInstance f=SingleInstance.s1;
}
}
三、代码块
1.静态代码块:在程序运行中在主函数之前运行,且只运行一次,主要用于对静态变量的初始化
package Statics;
public class StaticBlock {
/*
* 静态代码块在程序运行中在主函数之前运行,且只运行一次,主要用于对静态变量的初始化
*
* */
public static int s;
public static void main(String[] args) {
System.out.println("---------主函数执行了-----------");
s=10;
}
static {
System.out.println("----------静态代码块被执行了--------");
System.out.println(s);
}
}
实例:
/* * 斗地主在启动游戏房间的时候,应该提前准备好54张牌,后续才可以直接使用这些牌数据 * 该房间只需要一副牌。 *定义一个静态的ArrayList集合存储54张牌对象,静态的集合只会加载一份。 * 在启动游戏房间前,应该将54张牌初始化好 * 当系统启动的同时需要准备好54张牌数据,此时可以用静态代码块完成。 */
package Statics;
import java.util.ArrayList;
public class StaticBlockForexam {
/*
* 在启动游戏房间的时候,应该提前准备好54张牌,后续才可以直接使用这些牌数据
* 该房间只需要一副牌。
*定义一个静态的ArrayList集合存储54张牌对象,静态的集合只会加载一份。
* 在启动游戏房间前,应该将54张牌初始化好
* 当系统启动的同时需要准备好54张牌数据,此时可以用静态代码块完成。
*/
public static ArrayList<String> list = new ArrayList<>();
static {
String[] sizes;
sizes = new String[]{"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"};
String[] colors = {"♥", "♣", "o", "p"};
for (int i = 0; i < sizes.length; i++) {
for (int j = 0; j < colors.length; j++) {
String card = sizes[i] + colors[j];
list.add(card);
}
}
list.add("大王");
list.add("小王");
}
public static void main (String[]args){
System.out.println(list);
}
}
2.实例代码块
/*实例代码块: * 每次创建对象,调用构造器执行时,都会执行该代码块中的代码,并且在构造器执行前执行 使用场景:初始化实例资源。 * 无static修饰 * */
package Statics;
public class FactBlock {
/*实例代码块:
* 每次创建对象,调用构造器执行时,都会执行该代码块中的代码,并且在构造器执行前执行
使用场景:初始化实例资源。
* 无static修饰
* */
public static void main(String[] args) {
student s1=new student();
}
}
class student{
{
System.out.println("实例代码块被执行了");
}
public student(){
System.out.println("构造函数被执行了");
}
}