一.构造函数
1.什么是构造函数
构造函数是一个特殊的函数
没有返回值类型, 函数名和类名完全一致, 创建对象的时候被自动调用
2.什么时候使用构造函数
如果有一段代码需要在创建某个类的对象的时候就执行, 那么就可以将这段代码放在构造函数当中
* 3.构造函数的重载
构造函数和普通函数一样, 可以重载, 可以在参数列表中定义若干形参
通常我们会用构造函数给成员变量赋值, 在类中按照成员变量定义构造函数的形参, 创建对象时传入指定的实参
* 4.自动生成构造函数
创建对象的时候一定会调用构造函数的
一个类如果没有声明任何的构造函数, 在编译的时候会自动生成一个无参的
注意: 如果声明了有参的, 就不会再生成无参的了. 如果希望有参和无参的都使用, 那么有参和无参的都要显式的定义.
5.构造函数的访问权限
构造函数通常都是public, 目的就是为了在其他的类中可以通过构造函数创建该类对象
在某些特殊的情况下, 构造函数会用private修饰, 私有化, 不允许类外创建对象
二.this关键字
1.调用构造函数
在构造函数中的第一条语句使用"this(实参)"形式可以调用到其他的构造函数
提高了构造函数中代码的复用性
注意: 不要形成递归调用(自己调用自己)
* 2.当作引用
this用在一个方法中, 哪个对象调用当前方法, this就代表哪个对象
在一个方法中局部变量和成员变量同名的时候, 如果直接使用变量名访问, 那么是找局部变量, 如果想访问成员变量, 必须使用this.变量名
通常在set方法和构造函数中我们会使用this.变量名访问成员变量
三.代码块
1.什么是代码块
由一对大括号标记的一段代码
2.方法中的代码块
代码块可以出现在方法中, 在代码块中定义的变量, 超出代码块之后就会被释放
3.类中的代码块
也可以在类中定义代码块, 创建对象的时候就会执行
4.创建对象时内存中的工作原理
首先找到类, 在内存中找, 有就直接使用, 没有则从classpath查找并加载
调用构造函数, 在调用构造函数的时候, 会先在堆内存中创建对象
对象创建之后会初始化成员变量, 会执行成员代码块中的代码, 这两步的顺序由代码从上到下的顺序执行
执行构造函数中的代码
四.静态
* 1.静态变量
不用创建对象直接可以使用. 它在类加载之后就会初始化
可以通过"类名.变量名"直接访问
被类的所有对象共享
如果一个类的所有对象需要共享一个变量, 那么就可以把这个变量定义为静态的
* 2.静态方法
类加载后就可以使用, 不用创建对象
可以使用"类名.方法名"调用
不能使用非静态的变量
如果一个方法不访问外部任何非静态的变量, 那么就可以定义为静态方法, 别人调用方法时不用创建对象, 直接就能使用.
3.静态代码块
类加载后就直接执行
不能使用非静态的变量
如果有一段代码希望在别人使用当前类的时候就执行, 那么就可以定义在静态代码块中