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 ...
随机推荐
- win10安装anaconda及tensorflow1.9版本
前言 因为之前的anaconda的conda命令不能用,又找不到原因,所以就决定重装anaconda,然后再装个tensorflow环境.. 正文 可以去官网下载,也可以去清华的开源软件镜像站下载ht ...
- 十、Zabbix-自动关联模板
之前的文章中,我们实现了自动注册,自动分组:并且创建了模板,监控项,触发器.为的就是能够实现主机自动被期望的监控项监控到.接下来我们只要能让自动注册的主机能够自动连接到我们设置好的模板,就可以实现自动 ...
- & 和 && 区别和联系,| 和 || 区别和联系
& 和 && 区别和联系,| 和 || 区别和联系,实际项目中,什么情况用哪种? 首先,& 和 && 的联系(共同点): & 和 &&a ...
- 多线程13-CountdownEvent
); )); )); t1.Start(); t2.Start(); _coun ...
- 解决MySql忘记密码
描述:忘记了mysql的登录密码,无法登录的情况下该怎么办? 环境:CentOS 7,数据库:mysql 5.7 1.停止数据库(先查看mysql服务是否运行) # ps -ef | -i grep ...
- Sequential game
Sequential game Problem Description Sequential detector is a very important device in Hardware exper ...
- P2672跳石头
这是2015noip的一道二分答案的题目,看了题解才会,, 题目给出石头的位置并且让你踩着石头往前跳,最多删掉m个石头还可以顺利通过,求解最短跳跃距离的最大值. 那么二分什么呢:mid为跳跃的长度.那 ...
- Qfile
打开方式: void AddStudents::write_to_file(QString src){ QFile file("stu.txt"); if (!file.open( ...
- 小白学Python——用 百度AI 实现 OCR 文字识别
百度AI功能还是很强大的,百度AI开放平台真的是测试接口的天堂,免费接口很多,当然有量的限制,但个人使用是完全够用的,什么人脸识别.MQTT服务器.语音识别等等,应有尽有. 看看OCR识别免费的量 快 ...
- PyCharm控制台python shell 和 IPython shell的切换
1. IPython介绍 IPython 是一个 python 的交互式 shell,比默认的python shell 好用得多,支持变量自动补全,自动缩进,支持 bash shell 命令,内置了许 ...