JDK7新特性

本文主要介绍JDK7引入的新特性,主要以代码形式展示出来

import org.junit.Test;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * JDK7 的新特性
 */
public class JDK7_teatures {

    /**
     * 二进制字面量
     * 整数类型例如(byte,short,int,long)能够用二进制来表示了,
     * 通过在数字前面加入0b或者0B来标示一个二进制的字面量
     */
    @Test
    public void test1() {
        //一个8位 byte值:
        byte aByte = (byte) 0b00100001;
        //一个16位short值:
        short aShort = (short) 0b1010000101000101;
        //一些32位int值:
        int anInt1 = 0b10100001010001011010000101000101;
        int anInt2 = 0b101;
        //B可以是大写也可以是小写.
        int anInt3 = 0B101;
        //一个64位的'long'值. 注意"L"结尾:
        long aLong = 0b1010000101000101101000010100010110100001010001011010000101000101L;
        final int[] phases = {
                0b00110001,
                0b01100010,
                0b11000100
        };

        final int[] phases1 = {0x31, 0x62, 0xC4, 0x89, 0x13};
    }

    /**
     * 在数字字面量使用下划线,下划线只能出现在数字之间
     */
    @Test
    public void test2() {
        int a = 111_111;
        System.out.println(a);
    }

    /**
     * switch可以使用string了
     */
    @Test
    public void test3() {
        switch ("1") {
            case "2":
                System.out.println("2");
                break;
            case "1":
                System.out.println("1");
        }
    }

    /**
     * 实例创建的类型推断,泛型不用声明和创建对象的时候都写了
     */
    @Test
    public void test4() {
        Map<String, List<String>> myMap = new HashMap<String, List<String>>();
        //在Java SE 7中,你可以用一组空类型参数(<>)替换构造器的参数类型
        Map<String, List<String>> myMap1 = new HashMap<>();
    }

    /**
     * 使用Varargs方法使用不可维护的形式参数时改进了编译器警告和错误
     */
    @Test
    public void test5() {
        List l = new ArrayList<Number>();
        List<String> ls = l;       // unchecked warning
        l.add(0, new Integer(42)); // another unchecked warning
        String s = ls.get(0);      // ClassCastException is thrown
    }

    /**
     * try-with-resources资源的自动管理
     * 注意:这里的类都要求直接或间接实现 Closeable 接口
     */
    @Test
    public void test6() throws IOException {
        try (BufferedReader br = new BufferedReader(new FileReader(""))) {
            System.out.println(br.readLine());
        }
    }

    /**
     * 捕捉多个异常类型和对重新抛出异常的高级类型检查
     */
    @Test
    public void test7() {
        boolean is = true;
        try {
            if (is) {
                throw new IOException();
            } else {
                throw new SQLException();
            }
        } catch (IOException | SQLException ex) {
            ex.printStackTrace();
        }
    }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值