java中的构造方法与代码块

版权声明:本文为博主原创文章,未经博主允许不得转载。 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

猜你喜欢

转载自blog.csdn.net/qingzhizhenhun/article/details/84613651
今日推荐