构造函数
函数名与类名相同
不用定义返回值类型
没有具体的返回值
作用:给对象初始化值
默认构造函数
如果没有自己定义构造函数,系统会自动生成;
如果定义了,则默认构造函数不会自动生成。
构造函数与一般函数区别
1、构造函数在创建对象时,就会调用,并初始化
一般函数是创建对象后,使用时才会去调用
2、构造函数只会创建对象时调用一次
一般函数按需调用
重载
函数名相同,参数个数和类型不同
内存图解
函数进栈
构造函数细节
1、一般函数不能调用构造函数
2、函数名称,构造函数与类名相同,一般函数首字母小写
3、写个return
this关键字
成员变量和局部变量重名时,使用this进行区分
this应用
构造函数相互调用//this(name) 必须放在第一行
类的所有成员调用必须有引用变量
本类中调用本类,也要用到this
static关键字--数据共享
特点:
1、被所有对象共享
2、可以直接被类调用//类名.静态成员
3、优先于对象存在
成员变量与静态变量的区别
成员变量、实例变量
静态变量、类变量
1、作用域不同
2、存储位置不同,成员变量存储在堆内存的对象中
静态变量数据存储在方法区的静态区,
static关键字注意事项
1、静态方法只能访问静态成员
2、静态方法中不可以使用this、super关键字
3、主函数时静态的
主函数
new String[0]
static 图解--重要
非静态区:类、构造函数
静态区:main
栈
static应用
静态代码块
static{ } //只会加载一次
给类进行初始化
构造代码块
类中的代码块,可以给所有对象进行初始化
构造函数,给对应的对象进行针对性的初始化
初始化顺序
例:静态代码块 > 构造代码块 > 构造函数