1、&&和||是短路操作符,如操作符左边的布尔表达式能推算出整个表达式,则右边的布尔表达式不会执行;
& 和 |是非短路操作符,它将执行操作符两边的布尔表达式。
2、“==”用于比较引用类型变量(非null)时,两边的变量被显示声明的类型必须是同种类型或有继承关系,否则编译器报错;instanceof的规则与==类似。
3、boolean类型不能与其他基本类型进行强制转换。
4、(byte、char、short) op (byte、char、short、int) ---> int
byte、char、short 在++/-- 一元运算中不自动转化类型。
5、char占2个字节,且是无符号数,默认值是'u0000',取值范围0~2^16 -1(注意,c里面是一个字节,可以是有符号数,也可以是无符号数);
short占2个字节,有符号数。char变量与short变量之间的赋值总要强制类型转换。但把char类型的直接数赋给short类型变量,或者把int类型直接数赋给char类型变量,只要直接数在变量所属类型的取值范围内就运行自动类型转换,否则需要强制类型转换。
6、switch与case子句中表达式的合法类型必须为整型(byte、char、short、int)。
7、子类方法抛出的异常类必须是父类方法抛出的异常或其子类。
8、子类可以覆盖父类的静态方法,但不能变为非静态;同样父类的非静态方法也不能被子类覆盖为静态方法;
父类中的私有方法不能被子类覆盖,但可以在子类中重写(可以是非私有的);
父类的非抽象方法可以被覆盖为抽象方法。
9、super只能在构造方法或实例方法中使用,而不能在静态方法和静态代码块中使用。
10、父类的构造函数不应该调用可被子类覆盖的方法,因为如果这样,可能导致程序运行时出现伟预料的错误,虽然语法上并没有错。
11、synchronized、native只能用来修饰成员方法;transient、volatile只能用来修饰成员变量。
12、abstract不能修饰构造方法和静态方法,也不能与final连用。
13、final修饰的成员变量(包括实例常量、静态常量)必须显示初始化,可在定义时、构造函数里或静态代码块中初始化。
14、一个接口可以继承多个接口:interface C extends A,B{}。
15、import static 类/接口;允许直接访问另一个类/接口中的静态常量,而不必指定类/接口名。
16、finally代码块在return语句之前执行,但finally代码块不能通过重新给变量赋值的方式改变return语句的返回值。建议不要在finally代码块中使用return语句,因为这可能导致:1)覆盖try和catch块中的return语句;2)丢失异常。
17、运行时异常:编译器不会检查(即可以不try,也不用throws)。
18、对象的引用分为:StrongReference、SoftReference、WeakReference、PhantomReference。
19、Set中的对象不按特定方式排序,无重复对象,常用的有HashSet与TreeSet;
List的元素以线形方式存储,允许重复,常用的有ArrayList与LinkedList;
Map中的键对象不允许重复,常用的有HashMap与TreeMap。
浙公网安备 33010602011771号