静态块,构造块,静态函数

静态代码块:

  • 在java中使用static关键字声明的代码块。静态块用于初始化类,为类的属性初始化。

  • 静态代码优先于非静态的代码,是因为被static修饰的成员都是类成员,会随着JVM加载类的时候加载而执行,而没有被static修饰的成员也被称为实例成员,需要创建对象才会随之加载到堆内存。所以静态的会优先非静态的。

  • 每个静态代码块只会执行一次。如果类中包含多个静态代码块,那么将按照"先定义的代码先执行,后定义的代码后执行"。

static {
    	 System.out.println("静态初始化1");
    	  id = 40; 
    	  Employee employee = new Employee("liuliu",50);
    	  System.out.println(employee);
     }
     public static int id = 30;
     {
    	 
    	 System.out.println("初始化2");
    	 name = "zhaosi";
    	 age = 40;
     }
     static {
    	 System.out.println("静态初始化2");
    	 id=80;
     }

在这里插入图片描述

构造代码块:

{ // 构造代码块
}

  • 构造代码块的作用是给对象进行初始化。
  • 对象一建立就运行构造代码块了,而且优先于构造函数执行。这里要强调一下,有对象建立,才会运行构造代码块,类不能调用构造代码块的,而且构造代码块与构造函数的执行顺序是前者先于后者执行。
  • 构造代码块与构造函数的区别是:构造代码块是给所有对象进行统一初始化,而构造函数是给对应的对象初始化,因为构造函数是可以多个的,运行哪个构造函数就会建立什么样的对象,但无论建立哪个对象,都会先执行相同的构造代码块。也就是说,构造代码块中定义的是不同对象共性的初始化内容。
  {
    	 System.out.println("初始化1");
    	 name = "wangwu";
    	 age = 20;
     } 

构造函数:

  1. 对象一建立,就会调用与之相应的构造函数,也就是说,不建立对象,构造函数时不会运行的。
  2. 构造函数的作用是用于给对象进行初始化。
  3. 一个对象建立,构造函数只运行一次,而一般方法可以被该对象调用多次。
	public Employee(String name,int age) {
		super();
		System.out.println("有参构造");
		this.name = name;
		this.age=age;
		
	}
	public Employee() {
		
		super();
		System.out.println("无参构造");
		// TODO Auto-generated constructor stub
	}

在这里插入图片描述
根据最终的结果说明:
执行顺序如下:
静态代码块(一次)
构造代码块(new几次就有几次)
构造函数(new几次就有几次)
普通代码块(每次调用方法都会调用)

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值