构造函数
函数的写法:
1.函数名与类名相同。
2.不要定义返回值类型,连void都不需要。
3.构造方法不能return一个具体的返回值,构造方法没有具体的返回值。
4.一旦编写了至少一个构造方法,那么编译器不再赠送。
5.构造方法也是可以重载的。
一般函数和构造函数的区别
构造函数:对象创建时,就会调用与之对应的构造函数,对对象进行初始化。
一般函数:对象创建后,需要函数功能时才调用。
构造函数:对象创建时,会调用只调用一次。
一般函数:对象创建后,可以调用多次。
什么时候定义构造函数呢?
在描述事物时,该事物已存在就具备的一些内容,这些内心都定义在构造函数中。
this关键字
当成员变量和局部变量重名,可以用关键字this来区分。
this:代表对象。代表当前对象
this就是所在函数所属对象的引用
哪个对象调用了this所在的函数,this就代表哪个对象。
this也可以用于在构造函数中调用其他构造函数(只能定义在构造函数的第一行,初始化动作要先执行)
static(静态)
用于修饰成员(成员变量和成员函数)
被修饰后的成员具备以下特点:
1.随着类的加载而加载。
2.static优先于对象存在,因为static的成员随着类的加载就已经存在了。
3.被所有对象所共享。
4.被static修饰的成员多了一种调用方式可以直接被类名调用。类名:静态成员。
5.static修饰的数据事共享数据,对象中的存储的是特有数据。
注意:
1.静态方法只能访问静态成员(非静态既可以访问静态,又可以访问非静态)
(因为在内存当中是【先】有的静态内容,【后】有的非静态内容)
2.静态方法中不可以使用this或者super关键字。
3.主函数是静态的。
成员变量和静态变量区别
1.两个变量的生命周期不一样。
成员变量随着对象的创建而存在,随着对象的被回收而释放。
静态变量随着类的加载而存在,随着类的消失而消失。
2.调用方式不同。
成员变量只能被对象调用。
静态变量可以被对象调用,还可以被类名调用。
3.别名不同。
成员变量也称为实例变量。
静态变量称为类变量。
4.数据的存储位置不同。
成员变量数据存储在堆内存的对象中,所以也叫对象的特有数据。
静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享区域。
1.静态变量
当分析对象中所具备的成员变量的值都是相同的。
这时这个成员就可以被静态修饰
只要数据在对象中都是不同的,就是对象的特有数据,必须存储在对象中,是非静态的。
如果是相同的数据,对象不需要做修改,只需使用即可,不需要存储在对象中,定义成静态的
2.静态函数
函数是否用静态修饰,就参考一点,就是该函数功能是否有访问到多谢中的特有数据。
简单点说,从源代码看,该功能是否需要访问非静态的成员变量,如果需要,该功能就是非静态的。
如果不需要,就可以将该功能定义成静态的。(当然,也可以定义成非静态但是非静态需要被对象调用,而仅创建对象调用非静态的没有访问特有数据的方法,该对象的创建是没有意义。)
静态代码块
随着类的加载而执行。而且只执行一次。
作用:
用于给类进行初始化。
构造代码块
构造代码块是给所以对象进行初始化的。(通用性)
构造函数是给对应的对象进行针对性的初始化。(针对性)
函数里面定义的话就叫(局部代码块)
限定局部变量的生存周期
main函数的解析
public static void main(String[] args){
}
主函数特殊之处:
1.格式是固定的。
2.被jvm所识别和调用。
public:因为权限必须是最大的。
static:不需要对象,直接用主函数所属类名调用。
void:主函数没有具体的返回值。
main:函数名,不是关键字,只是一个jvm识别的固定的名字。
String[] args:这是主函数的参数列表,是一个数字类型的参数,而且元素都是字符串类型。