7.18上午笔记

7.18上午笔记

**1.局部代码块(用得少):

降低了代码的可读性。**
在嵌套的代码块中,不能定义同名局部变量,但是可以在没有嵌套关系的两个代码块中,定义同名局部变量。

**2.构造代码块

a.声明的方式和位置:在{}声明,在类中,方法体之外声明**
b.执行时机:在创建对象的时候才执行的,而且每次创建对象的时候,必执行
构造代码块 VS构造方法:
他们都会在创建对象时执行,而且有固定的执行顺序,先构造代码块,再执行构造方法

7.18上午笔记
成员代码块VS成员变量的初始化语句:
7.18上午笔记
7.18上午笔记
到现在为止,在创建一个对象的时候,我们有三种时机,可以初始化对象成员变量 的值:
1.成员变量的初始化语句
2.构造代码块
3.构造方法

关于构造代码块的使用场景:
7.18上午笔记

3.静态代码块:

a.声明方式和位置:static{ }声明,在类中方法体之外
b.执行时机:随着类加载而执行,而一个类,只会最多被一个jvm加载一次,所以,静态代码块,最多执行一次在代码中
c.注意事项:
1.使用场景:当部分代码,仅需要执行一次的时候,放在静态代码块中执行
2.静态代码块和静态方法一样,也是静态上下文的一种
静态上下文不能访问当前对象的普通成员变量值,
静态上下文不能访问当前对象的普通成员方法.

keypackge

package关键字,声明一个java文件中,定义的所有类所在包
7.18上午笔记
如果说,在一个java文件中,没有写packge关键字,是不是在该java文件中定义的类,就不属于任何一个包?此时该类,就属于默认包
注意:包用来组织类,即一个包中可以定义多个类,但是,不能再同一个包中定义同名类,只能在不同的包中定义同名类

keyimport

1.java语言中,可以在不同的包下定义同名类,如何唯一确定类?
通过类的权限定名,唯一确定一个类

7.18上午笔记
7.18上午笔记
默认情况下,编译器会在当前包中找目标类
但是如果说,我们用import关键字,导入了其他包中的类,及时当前包中,有同名类,也会调用使用其他包中的类

既要创建当前包中的同名类对象,还要创建其他包中的同名类对象
7.18上午笔记
7.18上午笔记