转载声明:文章来源https://blog.csdn.net/superme_yong/article/details/80511541
先说一下什么是初始化,初始化就是在最开始定义成员变量时给它一个初始的值,这个时候你就会问了,既然后面还要给它赋值为什么要给它初始化呢,不是多此一举么,首先这个初始化是为了防止程序运行时候出现未知的错误,或者bug。
初始化一般在构造函数中进行,它定义了函数的初始值,使程序可以正常运行,在new对象时构造函数就会自动被执行,它只会被执行一次,之后想修改需要自己再添加一个innt(初始化)方法,这个方法时外部的方法不会自动执行,需要手动调用。
不多说了上代码自己体会:
构造方法的作用:对对象初始化
(1)一般函数是用于定义对象应该具备的功能。而构造函数定义的是,对象在调用功能之前,在建立时,应该具备的一些内容。也就是对象的初始化内容。
(2)构造函数是在对象建立时由JVM调用, 给对象初始化。一般函数是对象建立后,当对象调用该功能时才会执行。
(3)普通函数可以使用对象多次调用,构造函数就在创建对象时调用。
(4)构造函数的函数名要与类名一样,而普通的函数只要符合标识符的命名规则即可。
(5)构造函数没有返回值类型。
构造函数要注意的细节:
(1)当类中没有定义构造函数时,系统会指定给该类加上一个空参数的构造函数。这个是类中默认的构造函数。当类中如果自定义了构造函数,这时默认的构造函数就没有了。
备注:可以通过javap命令验证。
(2)在一个类中可以定义多个构造函数,以进行不同的初始化。多个构造函数存在于类中,是以重载的形式体现的。因为构造函数的名称都相同。
public class Init {
    //创建构造方法的初始化
    int a;
    char b;
    short s;
    float f;
    long lo;
    double dou;
    byte e;
    boolean flag;
    Object obj;
//这些基本类型都会保证有一个初始的值。
//可见,java会为类的基本类型的变量提供一个初始值,各类型初始值不同,非基本类型初始为null。
//注意,这里的变量必须是类变量,注意,只会为类变量提供初始化,而局部变量不会。
//如果局部变量没有初始化,会收到一个出错信息(方法内定义一个变量要用的话需要给它初始化赋一个值,不然会报错)。
    public static void main(String[] args) {
        Init init = new Init();
        init.print();
    }
 
    public void print() {
        System.out.println("int a=" + a + " char b=" + b  +
                " short s=" + s + " float f=" + f + " long lo=" +
                lo + "\n double dou=" + dou + " byte e=" + e + " boolean flag="
                + flag + " Object obj=" + obj);
    }
}运行结果:
int a=0 char b=  short s=0 float f=0.0 long lo=0
double dou=0.0 byte e=0 boolean flag=false Object obj=null
public class InitTest {
    //构造函数中的初始化
    int i;
    Object obj;
    public InitTest(){
        System.out.println("before i="+i+"  obj="+obj);//初始化之前
        i = 1;
        obj = new Object();
        System.out.println("after i="+i+" obj="+obj);//初始化之后
    }
//由此可见,不论是基本类型,还是其他的类。java默认的初始化是最先发生的,位于一切方法之前。
    public static void main(String [] args){
        InitTest init = new InitTest();
    }
}运行结果:
before i=0  obj=null
after i=1 obj=java.lang.Object@4554617c
                
                    
                            
                            
                                    
                                    
帖子还没人回复快来抢沙发