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 ...
随机推荐
- 一个很有意思的小游戏:Dig2China
最近通关了一个小游戏,游戏故事是这样的:一个美国小男孩想要去中国,他决定从自家后院往下挖,横穿地心去中国,期间经历了很多次失败.但是,每次尝试都能收获一批钱,用这些钱升级钻地机,调整自己的工具,终于在 ...
- Web Service自动化测试知识点导图
- 【嵌入式 Linux文件系统】如何使用Initramfs文件系统
(1)#cd ../rootfs/ #ln -s ./bin/busybox init 创建软链接 (2)进入Linux内核 #make menuconfig General setup-->I ...
- [转帖]IDC发布2018下半年中国公有云市场报告
IDC发布2018下半年中国公有云市场报告:AWS以6.4%的份额名列第四 http://www.itpub.net/2019/05/06/1793/ 电信的公有云 好像是用的 华为的技术. AWS在 ...
- [19/06/03-星期一] HTML基础_C/S与B/S的区别&标题标签(h1-h6)、段落标签(p)
一.C/S与B/S的区别 C/S(Client/Server):客户端/服务器 1)一般使用的软件都是C/S架构,比如QQ.360.office365: 2)C表示客户端,用户通过客户端来使用软件:S ...
- mysql学习记录(一)
#打开MySQL服务 sudo service mysql start #Ubuntu Linux 安装配置MySQL #安装MySQL服务器,核心程序 sudo apt-get install my ...
- 数位DP 计划
通常的数位dp可以写成如下形式: [cpp] view plain copy int dfs(int i, int s, bool e) { if (i==-1) return s==target_s ...
- neo4j 初探
neo4j 初探 参考 转载:http://shomy.top/2018/06/08/neo4j-start/ 近期需要处理图数据,考察后打算使用neo4j, 相比其他一些图数据库,neo4j开源,跨 ...
- bootstrap table实现iview固定列的效果
因为bootstrap自带的固定列效果满足不了公司需求,所以借助fixed-table这个插件完成了iview固定列的效果 <!DOCTYPE html> <html lang=&q ...
- [IIS]修改MaxFieldLength与MaxRequestBytes彻底解决Request Too Long的问题
当 IIS7/7.5 收到的请求头的长度超过16K(默认值),就会引发"Bad Request - Request Too Long. HTTP Error 400. The size of ...