版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qingzhizhenhun/article/details/84613651
java中的构造方法跟普通方法有很大的区别
1.构造方法的方法名跟类名相同
2.构造方法没有返回值类型,连void也没有,也不能用return返回值
3.每次创建一个对象,都会调用构造方法,如果没有写构造方法,系统会默认加上一个空参的构造,如果已经写了构造方法,无论有无参数,系统都不会再加上构造方法
4.构造方法主要用于给对象初始化值
java中用"{}"包起来的就叫做代码块,根据位置与声明的不同,可以分为以下几种
1.局部代码块,局部位置,用于限定变量的生命周期
2.构造代码块,位于类中成员位置,用"{}"包起来,每次调用构造函数前,都会先执行一次构造代码块,可以把多个构造函数中的共同代码放一起,给对象进行初始化
3.静态代码块,在类中的成员位置,用{}括起来的代码,只不过它用static修饰了。
作用一般是对类进行初始化
它们的执行顺序
静态代码块 --> 构造代码块 --> 构造方法
静态代码块只执行一次,构造代码块每次调用构造方法的时候都会执行
class Chunk{
private String name;
private int age;
{
int i = 0;
System.out.println(i+"-------------chunk");
}
static {
int j = 1;
System.out.println(j + "-----------------staticChunk");
}
Chunk(){
this.name = "tom";
System.out.println("noname-------------construction");
}
Chunk(String a){
this.name = a;
System.out.println("hasname-------------construction");
}
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
}
class ChunkDemo{
public static void main(String[] args) {
Chunk c = new Chunk();//创建对象不给初始化值
System.out.println(c.getName());
System.out.println("-----------------------------------------");
Chunk c1 = new Chunk("andy");//创建对象给初始化值
System.out.println(c1.getName());
}
}
执行结果是
1-----------------staticChunk //静态代码块只执行一次
0-------------chunk //执行构造代码块
noname-------------construction //执行无参构造
tom
-----------------------------------------
0-------------chunk //执行构造代码块
hasname-------------construction //执行有参构造
andy