内部类
2020-04-09
成员内部类 #
- 成员内部类可以使用外部类的所有属性方法。
局部内部类 #
- 如果希望访问所在方法的局部变量,那么这个局部变量就必须是有效final的。
- 从java8开始,只要局部变量事实不变,那么final关键字可以省略。
- 可以使用外部类的所有属性和方法。
匿名内部类 #
- 参考局部内部类。
public void test1(){
//正确写法
final int a;
a=10;
//正确写法
final int b=10;
//定义后不能再次进行赋值
a=10;//错误
}
//tips:final如果修饰一个对象,那么该对象的引用的地址不能改变,但是对象的属性可以改变。
//正确写法,即在属性定义处赋值
class Student{
private final int a=10;
}
//正确写法,当在属性处没有赋值时,必须在该类的所有构造方法中进行赋值
class Student2{
private final int a;
public Student2(){
a=10;
}
public Student2(int a){
this.a=a;
}
}
//tips:不能既在属性定义处赋值,又在类的构造方法中赋值
进程P1
tmp1=s;
tmp1=tmp1+1;
s=tmp1;
进程P2
tmp2=s;
tmp2=tmp2-1;
s=tmp2;
当并发执行进程P1和进程P2时,可能会造成s的结果无法预测
此时,我们可以将s设置为临界资源,让进程P1和P2互斥的访问s,P1和P2的代码就叫做临界区。
0 | 100 0001 0 | 011 0110 0000 0000 0000 0000
#