空白键|如何优化?,面试官:这段代码有没有优化空间?要是有
分享职场生活、职场攻略、程序员创业资源 , 为一线开发者提供优质内容
作为一名程序员 , 求职面试时 , 关于编码的问题时常会遇到 。
张工是一名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
- 数码鲜蜂|三星大秀肌肉!这个透明手机如何?
- 马云|当年在美国为马云“挡子弹”的保镖,失去百万年薪后,现状如何?
- 阿狸先森|现今如何了?,被联想198亿元收购的巨头摩托罗拉
- 猛犸象|为钻研永生的秘密,俄罗斯科学家不惜注射猛犸象细菌,结果如何
- 小城时光说资讯|如何判断手机寿命有多长?如果出现这3个问题,说明你该换手机了,原创
- 任正非|任正非:不再是35岁优化定律,如今干到60、70岁也可以
- 白宫|越遭封锁越强大!长征二号发射鳖版X37B,白宫苦恼:如何做到的?
- 数评时代|面对新情况华米OV如何应对?,国内手机销量大降
- UC|如何在UC赚钱,我推荐这三个领域,零基础也能一天300!
- 网贷平台|假如网贷平台宣布良性退出,作为出借人,你该如何选择?