Java查漏补缺-小细节
1.类型转换问题
public static void main(String args[]) { int num = 2147483647 ; num += 1L;//根据num的类型,先将1L转为int,然后再相加,故结果为-2147483648 //long b = num + 1L; // 根据b类型,将num升级为long类型,然后相加 // int b = Integer.MAX_VALUE; 2147483647 // int b = Integer.MIN_VALUE; -2147483648 System.out.println(num) ; }
输出:-2147483648
2.逻辑运算,与运算(前边失败的,后边不会执行),或运算(前边成功的,后边也不会执行)
public static void main(String args[]) { boolean flag = 10%2 == 1 && 10 / 3 == 0 && 1 / 0 == 0 ; System.out.println(flag ? "mldn" : "yootk") ; }
输出:yootk(10%2==1 为false,后边不会执行)
public static void main(String args[]) { boolean flag = 10%2 == 1 || 10 / 3 == 0 || 1 / 0 == 0 ; System.out.println(flag ? "mldn" : "yootk") ; }
输出:Exception in thread "main" java.lang.ArithmeticException: / by zero
3.注解
(1)@Override:结构注解,防止覆写父类方法出现错误,在编译期就能意识到;
4.向下转型,需要用instanceof 判断实例是否为对应类的实例,防止隐患。
5.自动装箱和拆箱,构造包装类时,不需要调构造方法,在1.9版本中构造方法置为已过期
6.接口加强
(1)接口主要包含静态变量和抽象方法
(2)通常定义接口与实现类时,都需要先实现抽象类,然偶再实现具体实现类。以后接口增加新的公共方法,可以在抽象类中添加,不用每个实现类添加;
(3)在1.8版本,对接口进行了加强,可以在接口中直接加普通方法,但需要用default修饰。该方法属于补救方法,最好使用(2)的设计
(4)在1.8版本,还可以在接口中定义static方法,通过接口直接访问。
(5)但注意,最好使用(2)中的方式定义。
这是水木竹水的博客