一、this关键字的概述和应用(在本类中使用到了本类的对象就使用this)
1、在类中this的使用
1)用来区分成员变量和局部
2)在构造函数中调用构造函数(这种方式this只能放在第一行而且只能使用一次this调用其它的构造方法)
2、在类中的各个代码块
1)静态代码块
静态代码块:用staitc声明,随着类的加载而执行,只执行一次
- 它是随着类的加载而执行,只执行一次,并优先于主函数。具体说,静态代码块是由类调用的。类调用时,先执行静态代码块,然后才执行主函数的。
- 静态代码块其实就是给类初始化的,而构造代码块是给对象初始化的。
- 静态代码块中的变量是局部变量,与普通函数中的局部变量性质没有区别。
- 一个类中可以有多个静态代码块
2)构造代码块
类中直接用{}定义,每一次创建对象时执行。可以给所有的对象进行初始化
- 构造代码块的作用是给对象进行初始化。
- 对象一建立就运行构造代码块了,而且优先于构造函数执行。这里要强调一下,有对象建立,才会运行构造代码块,类不能调用构造代码块的,而且构造代码块与构造函数的执行顺序是前者先于后者执行。
- 构造代码块与构造函数的区别是:构造代码块是给所有对象进行统一初始化,而构造函数是给对应的对象初始化,因为构造函数是可以多个的,运行哪个构造函数就会建立什么样的对象,但无论建立哪个对象,都会先执行相同的构造代码块。也就是说,构造代码块中定义的是不同对象共性的初始化内容。
例子如下:
运行结果:
结果分析:
1)代码执行顺序:静态块代码>main()>构造块>构造函数
2)静态代码块只能执行一次,而构造块和构造函数都可以执行多次
3)匿名函数(没有名字的对象 ,定义对象的简写格式)
1):匿名对象应用场景
调用方法,仅仅只调用一次的时候。
那么,这种匿名调用有什么好处吗?
节省代码
注意:调用多次的时候,不适合。匿名对象调用完毕就是垃圾。可以被垃圾回收器回收。
匿名对象可以作为实际参数传递
例子如下:
由于匿名对象只能调用一次,那么想调用两次,只能是再次匿名一个对象,在这里不是一个对象而是两个对象
4)private关键字
private关键字特点
* a:是一个权限修饰符
* b:可以修饰成员变量和成员方法
* c:被其修饰的成员只能在本类中被访问