1.看到一个习题如下

boolean m = true;
if( m = false){
    System.out.println("True");
}else{
    System.out.println("False");
}

其实这一题的trick很容易看出来,有点基础知识都能看到 m = false 是赋值语句,而不是比较判断,那么 m = false 乃至任何赋值的式子在这里应该都为真,所以输出的为True。其实不然,一看答案发现输出的为False, 大跌眼镜,调试之,发现果然 m = false 的值为false,再google之,赋值表达式的值永远都是 = 号右边的值,这个以前没注意到。

2.局部变量不可加访问修饰符

3.方法体重如果throw抛出了一个异常,则必须在方法声明中throws异常

4.构造方法间的相互调用需要使用this,而不能使用类名,父类使用super关键字,如果相互调用,则调用必须写在第一行,关注这条规定,有点不明白其内在的原因是什么,暂时也没有google出来靠谱的答案。

5.一个定义在类中的内部类,可以访问其所在类的所有属性,包括私有属性。但定义在一个方法中的内部类,其访问范围仅限制在方法体中