1、权限修饰符
1.1 概述
在Java中提供了四种访问权限,使用不同的访问权限修饰符修饰时,被修饰的内容会有不同的访问权限,
- public:公共的
- protected:受保护的
- (空的):默认的
- private:私有的
1.2 不同权限的访问能力
public | protected | (空的) | private | |
---|---|---|---|---|
同一类中 | √ | √ | √ | √ |
同一包中(子类与无关类) | √ | √ | √ | |
不同包的子类 | √ | √ | ||
不同包中的无关类 | √ |
可见,public具有最大权限。private则是最小权限。
访问权限大小: public > protected > 空 > private
编写代码时,如果没有特殊的考虑,建议这样使用权限:
-
成员变量使用
private
,隐藏细节。 -
构造方法使用
public
(private(单列设计模式)) ,方便创建对象。 -
成员方法使用
public
,方便调用方法。
2、代码块
2.1 构造代码块
格式: {}
位置: 类中,方法外
执行: 每次在调用构造方法之前,都会执行
使用场景: 统计创建了多少个该类对象,也就是每次执行构造方法之前要执行的代码就可以放在构造代码块中
例如:
public class Person{
{
System.out.println("构造代码块执行了");
}
}
public class Test {
public static void main(String[] args) {
Person p1 = new Person();
Person p2 = new Person();
}
}
2.2 静态代码块
格式:
格式:static{}
位置: 类中,方法外
执行: 当类被加载的时候执行,且只执行一次
使用场景: 例如读取配置文件中的数据,加载驱动,这种只需要执行一次的代码就可以放在静态代码块中
public class Person {
static {
System.out.println("Person 静态代码块");
}
{
System.out.println("Person 构造代码块");
}
public Person(){
System.out.println("Person 构造方法");
}
}
public class Test {
/*
静态代码块:
格式: static{}
位置: 类中,方法外
执行: 随着类的加载而执行,并且只执行一次
使用场景: 例如读取配置文件中的数据,加载驱动,也就是说程序中只需要执行一次的代码就可以放在静态代码块中
执行优先级: 静态代码块 > 构造代码块 > 构造方法
*/
public static void main(String[] args) {
Person p1 = new Person();
Person p2 = new Person();
}
}
2.3 局部代码块
格式:{}
位置: 方法中
执行: 调用方法,执行到局部代码块的时候就执行
使用场景: 节省内存空间,没有多大的意义
例如:
public class Test {
public static void main(String[] args) {
/*
局部代码块:
格式: {}
位置: 方法中
执行: 调用方法,执行到了局部代码块的时候执行
使用场景: 节省内存空间,没有太多意义
*/
System.out.println("开始");
{
int num1 = 10;
System.out.println("局部代码块");
}// 把局部代码块中的变量占用的空间会释放
System.out.println("结束");
}
}