一、修饰符的范围
修饰符的范围,是否可访问:
类型 | private | 无修饰 | protected | public |
同一类 | 是 | 是 | 是 | 是 |
同一包中的子类 | 否 | 是 | 是 | 是 |
同一包中的非子类 | 否 | 是 | 是 | 是 |
不同包中的子类 | 否 | 否 | 是 | 是 |
不同包中的非子类 | 否 | 否 | 否 | 是 |
( 1 )对于外部类而言,它也可以使用访问控制符修饰,但外部类只能有两种访问控制级别: public 和默认。因为外部类没有处于任何类的内部,也就没有其所在类的内部、所在类的子类两个范围,因此 private 和 protected 访问控制符对外部类没有意义。
( 2 )内部类的上一级程序单元是外部类,它具有 4 个作用域:同一个类( private )、同一个包( protected )和任何位置( public)。
( 3 ) 因为局部成员的作用域是所在方法,其他程序单元永远不可能访问另一个方法中的局部变量,所以所有的局部成员都不能使用访问控制修饰符修饰。
- 普通类(外部类):只能用public、default(不写)、abstract、final修饰。
- (成员)内部类:可理解为外部类的成员,所以修饰类成员的public、protected、default、private、static等关键字都能使用。
- 局部内部类:出现在方法里的类,不能用上述关键词来修饰。
- 匿名内部类:给的是直接实现,类名都没有,没有修饰符。
二、运算符优先级
运算符优先级:单目乘除位关系,逻辑三目后赋值。
优先级 | 运算符 | 名称 | 结合性 |
1 | (),[] | 从左到右 | |
2 | !,+(正),-(负),~,++,-- | 单目运算符 | 从左到右 |
3 | *,/,% | 算术乘除 | 从左到右 |
4 | +,- | 算术加减 | 从左到右 |
5 | <<,>>,>>> | 位运算 | 从左到右 |
6 | <,<=,>,>=,instanceof | 关系运算符 | 从左到右 |
7 | ==,!= | 从左到右 | |
8 | & | 按位与 | 从左到右 |
9 | ^ | 按位异或 | 从左到右 |
10 | | | 按位或 | 从左到右 |
11 | && | 逻辑与 | 从左到右 |
12 | || | 逻辑或 | 从左到右 |
13 | ?: | 三目运算符 | 从右到左 |
14 | =,+=,-=,*=,/=,%=,&=,|=,^=,~=,<<=,>>=,>>>= | 赋值运算符 | 从右到左 |
三、构造方法特点
1.类中的普通方法可以和类名同名。
2.构造方法由new调用,不能由程序的编写者调用,只能由系统调用。
3.构造方法不能被继承。
4.子类可通过super()显示调用父类的构造方法
四、switch参数
1.byte,short,char,int及对应的包装类。
2.Enum类型。
3.String。