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)中的方式定义。

 

posted @ 2020-05-12 15:19  水木竹水  阅读(159)  评论(0编辑  收藏  举报