JDK7的新特性
本篇博客的内容
一、二进制字面量
二、数字字面量可以出现下划线
三、switch 语句可以用字符串
四、泛型简化
五、异常的多个catch合并
六、try-with-resources 语句
一、二进制字面量 <=返回目录
// 二进制字面量
int x = 0b100101;
System.out.println(x); //
二、数字字面量可以出现下划线 <=返回目录
// 数字字面量可以出现下划线
int x = 1_000;
int y = 1_1123_1000;
int z = 1_2_3_4_5;
System.out.println("x=" + x + ", y=" + y + ",z=" + z); // 不能出现在进制标识和数值之间
int a = 0b0000_0011;
// 不能出现在数值开头和结尾
int b = 0x11_22;
// 不能出现在小数点旁边
double c = 12.3_4;
System.out.println("a=" + a + ", b=" + b + ",c=" + c);
三、switch 语句可以用字符串 <=返回目录
package com.oy.test;
public class Test {
public static void main(String[] args) {
String key = "KEY_1";
String value = getValue(key);
System.out.println("key=" + key + ", value=" + value);
}
private static String getValue(String key) {
String value = "";
switch (key) {
case "KEY_1":
value += "格式错误";
break;
case "KEY_2":
value += "密码错误";
break;
default:
value += "系统错误";
break;
}
return value;
}
}
四、泛型简化 <=返回目录
// 菱形语法:泛型推断
List<String> list = new ArrayList<>();
五、异常的多个catch合并 <=返回目录
// jdk7之前的做法
private static void method() {
String className = "com.oy.test.Person";
Class<?> clazz = null;
try {
clazz = Class.forName(className);
Person p = (Person) clazz.newInstance();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
} // jdk7之后,异常的多个catch合并
private static void method2() {
String className = "com.oy.test.Person";
Class<?> clazz = null;
try {
clazz = Class.forName(className);
Person p = (Person) clazz.newInstance();
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException e) {
e.printStackTrace();
}
}

六、try-with-resources 语句 <=返回目录
public static void main(String[] args) {
method();
}
// jdk7之前的做法
private static void method() {
// try-with-resources 语句
// try(必须是java.lang.AutoCloseable的子类对象){…}
FileReader fr = null;
FileWriter fw = null;
try {
fr = new FileReader("d:/a.txt");
fw = new FileWriter("d:/b.txt");
int ch = 0;
while ((ch = fr.read()) != -1) {
fw.write(ch);
}
// int a = 1/0; // for test
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fw != null) {
try {
fw.close();
System.out.println("close fw...");
} catch (IOException e) {
e.printStackTrace();
}
}
if (fr != null) {
try {
fr.close();
System.out.println("close fr ...");
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
// jdk7之后改进版的代码
private static void method2() {
// try-with-resources 语句
// try(必须是java.lang.AutoCloseable的子类对象){…}
try (FileReader fr = new FileReader("d:/a.txt"); FileWriter fw = new FileWriter("d:/b.txt");) {
int ch = 0;
while ((ch = fr.read()) != -1) {
fw.write(ch);
}
// int a = 1/0; // for test
} catch (IOException e) {
e.printStackTrace();
}
}
JDK7的新特性的更多相关文章
- java 28 - 6 JDK7的新特性
JDK7的新特性: 二进制字面量 数字字面量可以出现下划线 switch 语句可以用字符串 泛型简化 异常的多个catch合并 try-with-resources 语句 二进制字面量 JDK7开始, ...
- java基础(1)-比较jdk5,jdk6,jdk7的新特性
jdk8已经出来好长时间了,这里自己学习时简单总结的jdk5,jdk6和jdk7的新特性:本文提纲: 一.jdk5的新特性 二.jdk6的新特性 三.jdk7的新特性 一.jdk5的新特性 首先简单介 ...
- 类的加载、时机、反射、模板设计、jdk7/jdk8新特性(二十六)
1.类的加载概述和加载时机 * A:类的加载概述 * 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化. * 加载 * 就是指将class文 ...
- jdk7和8的一些新特性介绍
jdk7和8的一些新特性介绍 本文是我学习了解了jdk7和jdk8的一些新特性的一些资料,有兴趣的大家可以浏览下下面的内容. 官方文档:http://www.oracle.com/technetwor ...
- JDK7&JDK9处理异常新特性
1.JDK7新特性是在 try (定义对象,作用域就是try方法体) 复制一个文件实例: 复制文件的原理: 先从硬盘写出到内存中,创建文件输入流对象 FileInputStream fis; 中间是在 ...
- JDK几个高版本的新特性
JDK 高版本的新特性 1.JDK5的新特性: 自动拆装箱 见Integer部分笔记 泛型 增强for循环 静态导入 可变参数 见集合部分笔记 枚举 是指将变量的值一一列出来,变量的值只限于列举出来的 ...
- JDK1.7新特性(2):异常和可变长参数处理
异常 jdk1.7对try--catch--finally的异常处理模式进行了增强,下面我们依次来看增强的方面. 1. 为了防止异常覆盖,给Throwable类增加了addSuppressed方法,可 ...
- dk7和jdk8的一些新特性
本文是我学习了解了j 的一些资料,有兴趣的大家可以浏览下下面的内容. 官方文档:http://www.oracle.com/technetwork/java/javase/jdk7-relnotes- ...
- JDK7和JDK8一些重要新特性
jdk7新特性(部分) switch支持字符串 List AutoCloseable接口实现自动关闭,在try()中 新增获取环境信息的工具方法,getJavaHomeDir,getUserHomeD ...
随机推荐
- .NetCore2.0项目之ABP+Vue(IView框架)单页应用之路,启动
首先很久没有好好静下心来做点东西了,一直用忙碌做借口,实际还是懒,今天决定动一动. 第一步,下载自己的项目模板 首先vue项目国内的暂时还没有,要登录https://aspnetboilerplate ...
- 20191127 Spring Boot官方文档学习(4.25)
4.25. Testing Spring Boot提供了许多实用程序和注解,可以在测试应用程序时提供帮助.测试支持由两个模块提供:spring-boot-test包含核心项,spring-boot-t ...
- Python-自定义函数-参数
一.自定义函数参数 1.种类 (1)位置参数 "x"就是位置参数 #!/usr/bin/env python # -*- coding: utf-8 -*- #author: di ...
- Struts学习(一)
1.Struts开发基础 1.1 MVC的基本概念 mvc将一个应用系统的输入.处理和输出流程按照Model(模型).View(视图)和Controller(控制器)三部分进行分离,划分成模型层.视 ...
- mysql5.7单机多实例安装
基于之前的mysql5.7单实例安装 修改/etc/my.cnf文件如下(这里配置4个实例,可自行修改数目) # # 多实例配置文件,可以mysqld_multi --example 查看例子 # [ ...
- JetBrains视图
三种视图模式:
- ubuntu或linux下找不到apache服务器配置文件httpd.conf
原因是ubuntu中是apache2,没有httpd.conf文件,所有找不到. 我的是ubuntu14.04系统,apache2配置文件在/etc/apache2/apache2.conf中, 如果 ...
- Python数据结构与算法?
数据结构与算法(Python) 冒泡排序 冒泡排序(英语:Bubble Sort)是一种简单的排序算法.它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.遍历数列的工作是 ...
- luogu P5331 [SNOI2019]通信
传送门 有匹配次数限制,求最小代价,这显然是个费用流的模型.每个点暴力和前面的点连匹配边,边数是\(n^2\)的. 然后发现可以转化成一个set,每次加入一个点,然后入点对set里面的出点连边.这个s ...
- leetcode第一题(easy)
第一题:题目内容 Given an array of integers, return indices of the two numbers such that they add up to a sp ...