代码块的概念
使用{}括起来的代码被称为代码块,根据位置和声明的不同,可分为局部代码块,构造代码块,静态代码块,同步代码块
静态代码块:
执行时间:
静态代码块在类被加载的时候进行加载,且只运行一次,且优与各种代码块以及构造函数
如果有多个静态代码块,会按代码顺序执行
作用:
因为是在类被加载的时候运行,那么通常会往静态代码块内放些需要在项目启动的时候运行的代码,如配置文件
静态代码块不能访问普通变量,普通变量只能通过对象来调用,是不能放在静态代码块中
public class staticCode {
static{
//在方法中不能存在静态代码块
System.out.println("静态代码块");
}
{
System.out.println("构造代码块");
}
}
构造代码块:
构造代码块在创建对象时被调用,每次创建对象都会调用一次,但是优先于构造函数执行。构造代码块不是优先于构造函数执行,而是依托于构造上,也就是说,如果不实话对象,构造代码块就不会执行
作用:
和构造函数的作用类似,都能对对象进行初始化,并且只要创建一个对象,构造代码块都会执行一次。但是反过来,构造函数则不一定每个对象建立时都执行(多个构造函数情况下,建立对象时传入的参数不同则初始化使用对应的构造函数)。
利用每次创建对象的时候都会提前调用一次构造代码块特性
构造函数
1.构造函数的命名必须和类名完全相同。在java中普通函数可以和构造函数同名,但是必须带有返回值
2.构造函数的功能主要用于在类的对象创建时定义初始化的状态。它没有返回值,也不能用void来修饰。这就保证了它不仅说明也不用自动返回,而且根本不能有任何选择。而其他方法都有返回值,即使是void返回值。尽管方法体本身不会自动返回什么,但仍然可以让它返回一些东西,而这些东西可能是不安全的;
3.构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用;而一般的方法是在程序执行到它的时候被调用的;
4.当定义一个类的时候,通常情况下都会显示该类的构造函数,并在函数中指定初始化的工作也可省略,不过java编译器会提供一个默认的构造函数,此默认构造函数是不带参数的。而一般的方法不存在这一特点。