你不知道的JAVA7以及展望java8(一)

  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新技术就这么多了,其他的不是很常用。

 

 

 

 

你可能感兴趣的:(java7)