一、构造器的特征:
1.它具有与类相同的名称
2.它不声明返回值类型。(与声明为void不同)
3.不能被static、final、synchronized、abstract、native修饰,不能有 return语句返回值
二、构造器的作用:
创建对象,给对象进行初始化
注 意:
1.Java语言中,每个类都至少有一个构造器
2.默认构造器的修饰符与所属类的修饰符一致
3.一旦显式定义了构造器,则系统不再提供默认构造器
4.一个类可以创建多个重载的构造器
5.父类的构造器不可被子类继承
三、代码块
代码块(或初始化块)的作用:对Java类或对象进行初始化
代码块(或初始化块)的分类:一个类中代码块若有修饰符,则只能被static修饰,称为静态代码块 (static block),没有使用static修饰的,为非静态代码块。
静态代码块:用static 修饰的代码块
- 可以有输出语句。
- 可以对类的属性、类的声明进行初始化操作。
- 不可以对非静态的属性初始化。即:不可以调用非静态的属性和方法。
- 若有多个静态的代码块,那么按照从上到下的顺序依次执行。
- 静态代码块的执行要先于非静态代码块。
- 静态代码块随着类的加载而加载,且只执行一次。
非静态代码块:没有static修饰的代码块
- 可以有输出语句。
- 可以对类的属性、类的声明进行初始化操作。
- 除了调用非静态的结构外,还可以调用静态的变量或方法。
- 若有多个非静态的代码块,那么按照从上到下的顺序依次执行。
- 每次创建对象的时候,都会执行一次。且先于构造器执行。
public class StaticTest {
// 静态属性,直接使用
public static String name = "name";
public String mobile;
// 静态方法,外部可以直接调用
public static void test() {
System.out.println("test");
}
//显示定义构造器
public StaticTest() {
System.out.println("StaticTest 构造器");
}
// 静态代码块,类加载的时候会初始化
static {
String str = "aa"; // 局部变量
int num = 0;
System.out.println("静态代码块1");
}
// 静态代码块,类加载的时候会初始化
static {
String str = "bb"; // 局部变量
int num;
System.out.println("静态代码块2");
}
//非静态代码块
{
String str = "cc"; // 局部变量
int num = 0;
System.out.println("代码块3");
}
}