包package
1、包的作用
包用来管理不同的类。
2、包名
包名要全部小写,一般是域名反写,如com.liu。在Java中,java解释器会将package中的.解释为目录分隔符/,也就是说该文件的目录结构为:...com/liu/...
3、全类名/全限定名
包名+类名,如com.liu.Student
4、使用import关键字导包
①当导入一个包后,这个包下的其他类就可以直接使用了,不用再导入;
②java.lang包下的类也可以直接使用;
③其他情况,比如不同包中的其他类要导个包或者import全类名才可以使用。
final
学习了继承之后知道了子类可以修改父类中的属性值或者重写父类中的行为,但是如果不想被改变则可以用final关键字修饰。
1、修饰变量
不可被改变,叫常量,只能被赋值一次。
被final修饰的常量名称,一般都有书写规范,所有字母都大写,单词之间使用_连接。
final修饰的变量
(1)基本数据类型:其值不可再变化;
(2)引用数据类型:指向的地址不会再变化,但地址中存的内容是可能会被改变的。
2、修饰方法
此方法不可被子类重写。如果这个方法表示的是一种规则,不想被别人改变,则可用final修饰。
3、修饰类
不可被继承。像Java中提供的Math、String和Scanner这些类都是被final修饰的,只希望我们使用,不想要我们去改变它们的行为。
后面的2和3只用知道就行了,1用的较多,要掌握。
权限修饰符
控制可以被访问的范围。
范围分为四个部分,分别是本类、同一包下的其他类、不同包下的子类、不同包中的无关类。
1、private
2、默认/缺省
3、protected
想让其他包中的子类也可以访问到,提出了protected修饰符。
4、public
实际开发中最常用的就是private和public:
(1)成员变量私有
(2)方法公开
特例:如果一个方法中的代码是其他方法中的共性抽取出来的,这个方法一般也私有,不对外提供。
代码块
用大括号括起来的代码。
1、局部代码块
写在方法里面的一对大括号,可以提前结束变量的生命周期,已被淘汰。
2、构造代码块
把构造方法中重复的代码抽取出来放到用大括号括起来,成员变量的位置。
格式:
{
//语句体;
}
在每次创建本类对象的时候一定会先执行构造代码块,然后再执行构造方法。
这个技术也渐渐淘汰了,因为太死了,不够灵活,即在创建对象的时候构造代码块中的内容一定会执行,没有办法不执行,但是有时候我们就是不想要执行。
所以如果构造方法有共性的部分可以写成一个构造方法由其他构造方法通过this进行调用,也可以写成一个方法由构造方法去调用。
3、静态代码块
格式:
static {
//语句体;
}
随着类的加载而出现,只执行一次。
什么时候用?在类加载的时候做一些数据初始化,并且只希望只执行一次的时候就可以用了。