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 ...
随机推荐
- http层负载均衡之 haproxy实践篇
方案 上篇文章讲到了负载均衡的相关理论知识,这篇文章我打算讲讲实践方法以及实践中遇到的问题 方案:haproxy http层负载均衡 安装一个haproxy服务,两个web服务 haproxy:192 ...
- java日常统计
姓名:Danny 日期:2017/11/27 任务 日期 听课 编程程序 阅读课本 准备考试 日统计 周一 30 120 150 周二 50 140 190 周三 周四 周五 周六 周 ...
- tensorflow学习之tf.truncated_normal和tf.random_noraml的区别
tf版本1.13.1,CPU 最近在tf里新学了一个函数,一查发现和tf.random_normal差不多,于是记录一下.. 1.首先是tf.truncated_normal函数 tf.truncat ...
- DG on Windows 10 S: 执行任意代码
DG on Windows 10 S: 执行任意代码 windows 10 S版本是什么鬼? 众所周知,我们使用的是windows 10企业版 LTSC.更准确一点,CMD运行winver,我的版本是 ...
- Web服务器——WSGI
1.什么是WSGI? WSGI全称 Web Server Gateway Interface,也可称作Python Web Server Gateway Interface,开始于2003年,为Pyt ...
- 2. Docker部署tomcat, nginx, redis,及docker私有仓库
1. 部署tomcat 1.1 下载tomcat docker pull tomcat:7-jre8 1.2 部署容器 docker run -di --name=tomcat -p 8 ...
- 转载 PowerDesigner导出mysql数据结构
转自:https://blog.csdn.net/dkingyaoyao/article/details/84586146 好久没有使用PowerDesigner,突然想用它导出数据结构,居然忘记了. ...
- vue.js(20)--vue路由
后端路由 对于普通的网站,所有的超链接都是url地址,所有的url地址都对应着服务器上的资源 前端路由 对于单页面应用程序来说,主要通过单页面中的hash(#)来进行页面的切换.hash的特点是htt ...
- javaweb新手学习之Tomcat
一.Tomcat服务器常见启动问题: (1).Java_home环境变量,由于tomcat服务器的bin目录中的一些jar文件必须使用到java类库,所以必须先配置Java_home环境变量. (2) ...
- gradle + mybatis 复制xml等配置文件到输出目录
问题 部署项目并启动项目后,使用mybatis时候,报一个错误:org.apache.ibatis.binding.BindingException: Invalid bound statement ...