java一直以来都长期占据编程语言的宝座,基本上和C语言不分上下,在最近一年中java又从新回到编程排行榜第一的宝座,但是由于企业大部分使用java6或者java1.5,所以在java7新增加的一些东西在企业基本上没有使用,在这里我将介绍一下java7的一些新的特征,以及本来对即将出来java8做一点点预测。
本人一直从事java,但是现在还是属于入门级菜鸟级别,如果写随笔有错误,请大家多多指点出来, 毕竟只是一个技术交流而已。
首先java7的出现,提高了开发人员的生产效率,平台性能和模块方向又向上迈出一步,变得更加强大和灵活。本文是此类型随笔的第一节,我主要从java7语法的新特征开始讲起,我主要挑选出其中最主要的来讲起。
①、switch语句中使用字符串
为什么要说switch语句使用字符串呢, 在以前很容易遇到这样的需求,在程序中需要根据用户的性别来做一些操作,比如说是男的应该叫XXX先生,女性应该叫XXX女士,以前基本上采用if()来作为判断, 但是java7把这个问题给我们考虑进去了,不用写if语句了,直接使用switch语句即可,代码如下
public static void main(String[] args) { String sex = "男"; switch (sex) { case "男": System.out.println("先生"); break; default: System.out.println("女士"); break; } }
但是众所周知字符串除了具体的串还应该有Unicode转义字符,java7也考虑进去了,请看下面代码:
public static void main(String[] args) { String sex = "男"; switch (sex) { case "\u7537": System.out.println("先生"); break; default: System.out.println("女士"); break; } }
运行的结果就不用运行了吧,只要是java7,程序一定可以运行的。
②、异常处理
任何项目都需要异常处理, 你不可能给用户看到什么这样的IO异常或者其他null异常吧,所以异常处理是程序一个关键。在java7中改进了catch字句的语法,允许在其中指定多种异常,每个异常类型之间使用“|”来分割,但是这个情况需要注意不允许一个异常是另外一个异常的子类,所以在程序中需要注意,有些人会以为我直接获取exception异常就可以了,但是在很多情况下,你需要异常的详细信息的时候就必须要分开捕获,不然在处理异常的时候很麻烦。具体代码如下(随便弄了一个异常,至少演示而已)
public static void main(String[] args) { try { Integer.parseInt("hello"); } catch (NumberFormatException | NullPointerException e) { e.printStackTrace(); } }
③ try-with-resources语句
在java7中引入了使用try语句进行资源管理,对于资源的管理大家都知道有一个原则“谁申请,谁释放”,比如说一个数据库连接,你必须关闭。因为这些资源涉及到系统的主存,磁盘文件,网络连接,数据库连接等等,这些资源是有限的,所以必须要释放掉。而在使用这些资源管理的时候很可能会出现各种各样的异常,而资源管理要求无论你操作成功与否,都必须要把申请的资源释放掉,在以前使用中通常使用try-cache-finally,在finally中进行关闭,但是java7中增加了try-with-resources语句它会自动的关闭资源,但是也必须满足一个条件,那就是必须实现java.lang.AutoCloseable接口,否则会出现编译错误。常见的I/O相关操作,java.sql.Connection,java.sql.Result,java.sql.Statement等等都实现了此接口。下面是I/O操作,因为我实现了AutoCloseable接口,所以我不需要关闭资源,java环境会自动关闭资源。
package com.zh.exception7; import java.io.BufferedReader; import java.io.FileReader; /** * @Copyright (C), 2010-2030. * @FileName TryWithResouces.java * @version 1.0 * @Description: 【用于测试java7新增加的功能特点,本类主要是java7提供了一个自动关闭资源的类型,try-with-resource】 * @Author 张兵 * @Date: 2013-7-25:上午9:42:28 * @Modification User: 程序修改时由开发人员编写 * @Modification Date: 程序修改时间 * @email [email protected] */ public class TryWithResouces implements AutoCloseable { /** * @see 在这里不用关闭io流,因为会自动管理,io流以及数据库操作的接口都实现了AutoCloseable接口,所以说java虚拟机会直接调用AutoCloseable接口中的close方法 * @see 同时此操作可以对多个进行关闭。 * @param path * @return * @throws Exception */ public String Test(String path) throws Exception{ try(BufferedReader bufferedReader = new BufferedReader(new FileReader(path))){ StringBuilder stringBuilder = new StringBuilder(); String line = null; while ((line=bufferedReader.readLine()) != null) { stringBuilder.append(line); stringBuilder.append(String.format("&%")); } return stringBuilder.toString(); } } /** * 如果你要关闭的话,那么必须从写close方法 */ public void close() throws Exception { System.out.println("传统的关闭方法"); } }
java7中增加的内容还很多,比如说在数字中间增加"_"之类的,以及lambda表达式之类的。大家仔细去官网上面看吧,在这里我讲java7新技术就这么多了,其他的不是很常用。