包、final、权限修饰符、
包
包就是文件夹,用来管理各种不同功能的Java类,方便后期代码维护
- 包名的规则:域名反写+包的作用,英文小写,见名知义
使用其他类的规则:需要使用全类名(包名+类名)
import com.package.domain.Student
使用这种方式
- 使用同一个包中的类时,是不需要导包的
- 使用java.lang包中的类时,不需要导包
- 其他情况都需要导包
- 如果同时使用两个包中的同名类,需要使用全类名
final
- 修饰方法:表明该方法时最终方法,不能被重写
- 修饰类:表明该类是最终类,不能被继承
- 修饰变量:叫做常量,只能被赋值一次
- 修饰方法和修饰类自己写代码时很少用
常量
作为系统的配置信息,方便维护,提高可读性
命名规则
- 单个单词:全部大写
- 多个单词:全部大写,单词之间用下划线隔开
细节 - final修饰的变量是基本类型:**数据值**不能发生改变
- final修饰的变量是引用类型:**地址值**不能发生改变,但是对象内部的值可以改变
权限修饰符
- 用来控制一个成员能够被访问的范围
- 可以修饰成员变量、方法、构造方法、内部类
分类
作用范围由小到大(private <空着不写 < protected < public
)
作用范围:
修饰符 | 同一个类中 | 同一个包中其他类 | 不同包下的子类 | 不同包下的无关类 |
---|---|---|---|---|
private | √ | |||
空着不写 | √ | √ | ||
protected | √ | √ | √ | |
public | √ | √ | √ | √ |
private
:本类中用
默认
:只能本包中用
protected
:受保护的
public
:公共的
使用规则
实际开发中,一般只用private
和public
- 成员变量私有
- 方法公开
- 特例:如果方法中的代码是抽取其他方法中的共性代码,这个共性代码的方法一般也私有
代码块
局部代码块
写在方法里的单独的{}
作用是:提前结束变量的生命周期
例:
public static void main(String[] args) {
{
int a = 10; // 作用域只在所属的{}中
sout(a);
}// 出了这个范围,变量a就会从内存中消失
}
构造代码块
- 写在成员位置的代码块,优先于构造方法执行。
因此可以把重复的代码写在构造代码块中
- 执行时机:在创建本类对象的时候,会先执行构造代码块,再执行构造方法
- 缺点:不够灵活
- 改进:将共同代码放进带参构造中,然后再别的构造方法中使用
this(...)
,this
里的参数就传入默认值null或0;或抽取成方法
静态代码块
- 格式:
static{}
- 特点: 需要通过
static
关键字修饰,随着类的加载而加载,并且自动触发,只执行一次 - 使用场景:在类加载的时候,做一些数据初始化的时候使用