Java static的应用知识

一、工具类

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("构造函数被执行了");
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Gxbfeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值