深入理解《java 7 核心技术和最佳实践》读书笔记--(1)

java 7 语言新特性

  • switch 语句支持字符串,编辑器层面的修改,将字符串变为hashcode,并加入equals判断逻辑保证逻辑正确性(hashcode值有时会冲突)
  • 二进制整数字面量
0b开头 代表二进制
0x开头 代表十六进制
0 开头代表八进制
  • 处理异常的异常丢失处理,两种思路
 /**
     * 抛出try 中的异常。忽略finally块的异常
     * @param fileName
     * @throws BaseException
     */
    public void read(String fileName) throws BaseException{

        FileInputStream input = null;
        IOException readException = null;

        try {
            input = new FileInputStream(fileName);
        }catch (IOException e){
            readException  = e;
        }finally {
            if(input!=null){
                try{
                    input.close();
                }catch (IOException ex){
                    if(readException ==null){
                        readException = ex;
                    }
                }
            }
            if(readException!=null){
                throw  new BaseException(readException);
            }
        }

    }


    /**
     * 把所有的异常都记录下来,通过addSuppressed方法把被抑制的方法记录下来
     * @param fileName
     * @throws IOException
     */
    public void read2(String fileName) throws IOException{

        FileInputStream input = null;
        IOException readException = null;

        try {
            input = new FileInputStream(fileName);
        }catch (IOException e){
            readException  = e;
        }finally {
            if(input!=null){
                try{
                    input.close();
                }catch (IOException ex){
                    if(readException !=null){
                        readException.addSuppressed(ex);
                    }else{
                        readException = ex;
                    }
                }
            }
            if(readException!=null){
                throw  new IOException(readException);
            }
        }

    }
    }

  • catch多个异常的时候,用"|"隔开的异常,最好不要出现其中一个是另外一个的子类,否则会出现编译错误
  • try-with-resource语句,能保证资源被自动回收
 /**
     * 异常既可能出现在try中,也可能出现在释放资源时
     * 1.当异常出现在try中语句中,资源释放正常进行,try中的异常会正常抛出
     * 2.如果异常即出现在try中也出现在释放资源中,那么最终抛出的异常是try语句的异常,而释放资源出现的异常会被作为被抑制的异常添加,通过Throwable.addSuppressed方法实现
     * @param path
     * @return
     * @throws IOException
     */
    public String readFile(String path) throws IOException {

        try (BufferedReader bufferedReader = new BufferedReader(new FileReader(path))) {
            StringBuilder builder = new StringBuilder();
            String line  = null;
            while((line=bufferedReader.readLine())!=null){
                builder.append(line);
                builder.append(String.format("%n"));
            }
            return builder.toString();
        }
    }
  • 变长参数的方法调用,使用泛型的变长参数方法产生编译器参数警告
 /**
     * 方法必须是static 和 final,@SafeVarargs抑制错误,但需要开发确保泛型参数处理不会应发类型安全问题
     * @param args
     * @param <T>
     * @return
     */
    @SafeVarargs
    public static <T> T useVarargs(T...args){
        return args.length>0?args[0]:null;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值