面试官:这段代码有没有优化空间?要是有,如何优化?
分享职场生活、职场攻略、程序员创业资源 , 为一线开发者提供优质内容
作为一名程序员 , 求职面试时 , 关于编码的问题时常会遇到 。
张工是一名java程序员 , 最近到某知名互联网公司面试 , 面试官提了这样的一个问题:
【面试官:这段代码有没有优化空间?要是有,如何优化?】这段代码从代码整洁角度看 , 有没有优化的空间?如何优化?
面试官:你平时也是这么写的吗?
张工:是的
面试官:你有没有觉得这段代码可读性很一般呢?
张工:还好 。
面试官:那你了解jdk1.7新特性吗?
张工:这个我了解啊 。
面试官:我问的这个就是和这个相关啊 。
被面试官这么一说 , 张工都不好意思了 。
其实面试官问这个问题无非就是考察两点:
对Jdk1.7新特性是否了解try()...catch()的用法 , 关闭代码的逻辑比较冗长在JDK1.7前 , 通常我们使用try...catch()来捕获异常的 , 如果遇到类似IO流的处理 , 一般是在finally部分关闭IO流 , 但在JDK1.7后 , Java7的编译器和运行环境支持新的try-with-resources语句 , 称为ARM块(AutomaticResourceManagement) , 自动资源管理 。 写在()里面的流对象对应的类都实现了自动关闭接口AutoCloseable 。
一、认识AutoCloseableAutoCloseable接口位于java.lang包下 , 从JDK1.7开始引入 。
在JDK1.7之前 , 我们通过try{}finally{}在finally中释放资源 。 在finally中关闭资源存在以下问题:
开发者需要手动写代码做关闭的逻辑;有时候可能会忘记关闭一些资源 , 导致内存泄漏;关闭代码的逻辑比较冗长 , 代码可读性差 。在JDK1.7后 , 对于实现AutoCloseable接口的类的实例 , 将其放到try后面(我们称之为:带资源的try语句) , 在try结束的时候 , 会自动将这些资源关闭(调用close方法) 。
带资源的try语句的3个关键点:
由带资源的try语句管理的资源必须是实现了AutoCloseable接口的类的对象 。 在try代码中声明的资源被隐式声明为fianl 。 通过使用分号分隔每个声明可以管理多个资源 。格式:
try(创建流对象语句 , 如果多个可以使用';'隔开){//dosomething}catch(IOExceptione){e.printStackTrace();}JDK1.7前
比如我们将FileWriter放置try()中
publicstaticvoidwriteFile(Stringstr){try(FileWriterfw=newFileWriter("e://1.txt",true)){fw.write(str);}catch(Exceptione){e.printStackTrace();}}我们跟进去看FileWriter.发现继承至OutputStreamWriter
推荐阅读
- 国际社会|日首相安倍在医院体检约7个半小时 官邸否认健康恶化
- 日本内阁|安倍突然体检令日本政坛不安,被爆上月曾在官邸办公室吐血
- 口罩|法国多名官员吁免费供应口罩 一乘客拒戴口罩被逐出高铁列车
- 项目|官宣!超4700亿元的大项目
- 安倍晋三|安倍突然体检令日本不安 被曝上月在官邸办公室吐血
- 晓正谈历史|从右将军到丞相,让诸葛亮官复原职的,是不起眼的第三次北伐
- 这段话很现实,送给自己
- 欧拉发布好猫内饰官图:这是你没有见过的“船新”内饰
- 中国新闻网|日首相安倍在医院体检约7个半小时 官邸否认健康恶化
- 中国新闻网|法国多名官员吁免费供应口罩 一乘客拒戴口罩被逐出高铁列车