先说一下什么是初始化,初始化就是在最开始定义成员变量时给它一个初始的值,这个时候你就会问了,既然后面还要给它赋值为什么要给它初始化呢,不是多此一举么,首先这个初始化是为了防止程序运行时候出现未知的错误,或者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