浅谈静态代码块的使用

概念

  • 概括的说:静态代码块在类加载时调用,并且只调用一次。
  • 静态代码块最常用的作用就是:给一个对象的属性初始化。

具体的说:

1、当调用一个 类的静态变量 时,这个类中的静态代码块会执行。【只有静态代码块会执行】
2、当调用一个 类的静态方法 时,这个类中的静态代码块会执行。【只有静态代码块会执行】
3、当创建一个 类的一个实例 时,这个类中的静态代码块、非静态代码块(也叫构造代码块)、创建实例的相应的构造方法都会执行。

测试代码

package demo01;

/**
 * 在创建Test06的一个实例时:即Test06 test06=new Test06();
 * 调用的顺序依次是:静态代码块、非静态代码块、构造方法。并且静态代码块只运行依次。
 * 每创建一个Test06实例,非静态代码块、构造方法都会执行。这与静态代码块只执行一次是不同的。
 */
public class Test06 {
    /**
     * 静态代码块
     */
    static{
        System.out.println("Test06 static block");
    }

    /**
     * 非静态代码块
     */
    {
        System.out.println("Test06 non-static block");
    }

    /**
     * 构造方法
     */
    public Test06() {
        System.out.println("Test06 constructor with no arguments");
    }
    public Test06(String id){
        System.out.println("Test06 constructor with one argument id"+ id);
    }

    /**
     * 静态变量
     */
    public static int book = 1;

    /**
     * 静态方法
     */
    public static void sixi(){
        System.out.println("static method");
    }


    public static void main(String[] args) throws ClassNotFoundException {

		//当创建一个 `类的一个实例` 时,这个类中的静态代码块、非静态代码块(也叫构造代码块)、创建实例的相应的构造方法都会执行
        System.out.println("*****************");
//        new Test06();
//        System.out.println("*****************");
//        new Test06("1");

        //调用静态变量时,只有静态代码块会执行
//        System.out.println(Test06.book);

        //在调用静态方法时,只有静态代码块会执行
//        Test06.sixi();

        //在Test06下面的main方法写这个语句,静态代码块会执行,但是不在Test06这个类下面,这句话就不能让静态代码块执行
//        Test06.class.getClassLoader().loadClass(Test06.class.getName());
        Class<Test06> test06Class = Test06.class;

        //加载Test06时,只有静态代码块会执行
//        Class.forName(Test06.class.getName());

    }
}

(反射技术)使用Class类中的forName方法获取class文件对象,会执行类中的静态代码块

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Session是Java Web常用的一种状态管理技术,它可以在不同的HTTP请求之间共享数据,常用于用户登录、购物车等场景。下面我来浅谈一下Session的使用。 Session的创建 在Servlet,可以通过HttpServletRequest的getSession()方法来获取或创建Session对象。如果请求已经存在Session,则返回已经存在的对象,否则创建一个新的Session对象并返回。示例代码如下: ```java HttpSession session = request.getSession(); ``` Session的存储 Session的数据存储在服务器端,可以通过setAttribute()方法向Session存储数据。示例代码如下: ```java session.setAttribute("username", "张三"); ``` Session的获取 在Session存储的数据可以通过getAttribute()方法获取。示例代码如下: ```java String username = (String) session.getAttribute("username"); ``` Session的过期 Session有两种过期方式:基于时间的过期和基于使用次数的过期。基于时间的过期是指Session在一定时间内没有被使用,则失效;基于使用次数的过期是指Session在一定时间内没有被使用,则失效。 在web.xml可以设置Session的过期时间,示例代码如下: ```xml <session-config> <session-timeout>30</session-timeout> </session-config> ``` 上述代码表示Session的过期时间为30分钟。 Session的销毁 Session可以通过invalidate()方法销毁。示例代码如下: ```java session.invalidate(); ``` 总结 Session是Java Web常用的一种状态管理技术,可以在不同的HTTP请求之间共享数据。Session的使用需要注意过期时间和销毁方式,以免造成安全隐患和资源浪费。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值