1。二进制字面量值
// An 8-bit 'byte' value:
byte aByte = (byte)0b00100001;
// A 16-bit 'short' value:
short aShort = (short)0b1010000101000101;
// Some 32-bit 'int' values:
int anInt1 = 0b10100001010001011010000101000101;
int anInt2 = 0b101;
int anInt3 = 0B101; // The B can be upper or lower case.
// A 64-bit 'long' value. Note the "L" suffix:
long aLong = 0b1010000101000101101000010100010110100001010001011010000101000101L;
2.可以在数字字面量中使用"下划线"("_")
long creditCardNumber = 1234_5678_9012_3456L;
long socialSecurityNumber = 999_99_9999L;
float pi = 3.14_15F;
long hexBytes = 0xFF_EC_DE_5E;
long hexWords = 0xCAFE_BABE;
long maxLong = 0x7fff_ffff_ffff_ffffL;
byte nybbles = 0b0010_0101;
long bytes = 0b11010010_01101001_10010100_10010010;
要注意的是,下划线放在以下几个地方是不正确的:
(1).最前面; 如_52 ,这不是数字字面量,而是也是变量名了
(2).小数点的两边; 如float pi1 = 3_.1415F 和 float pi1 = 3._1415F 都是不正确的
(3).最后面; 如int x3 = 52_;
(4).不能放在0x这样前缀的中间,如:int x5 = 0_x52;
3.可以在switch语句中使用String类型的变量
public String getTypeOfDayWithSwitchStatement(String dayOfWeekArg) {
String typeOfDay;
switch (dayOfWeekArg) {
case "Monday":
typeOfDay = "Start of work week";
break;
case "Tuesday":
case "Wednesday":
case "Thursday":
typeOfDay = "Midweek";
break;
case "Friday":
typeOfDay = "End of work week";
break;
case "Saturday":
case "Sunday":
typeOfDay = "Weekend";
break;
default:
throw new IllegalArgumentException("Invalid day of the week: " + dayOfWeekArg);
}
return typeOfDay;
}
4.类型推断,泛型构造器和非泛型的Classes
(Type Inference and Generic Constructors of Generic and Non-Generic Classes)
首先看一个泛型构造器和类型推断的例子:
class MyClass<X> {
<T> MyClass(T t) {
// ...
}
}
这里X是泛型类MyClass<X>的参数化类型,而T是其构造器的参数化类型。
那怎么样实例化它呢?
new MyClass<Integer>(""),这条语句创建了MyClass<Integer>一个实例,这条语句显式的指定了MyClass<X>
中的参数X的类型为Integer。 同时,因为实际调用构造器时参数是String类型,所以编译器推断String就是这
个T的类型,。
接下来看下面这两种例子:
1.MyClass<Integer> myObject = new MyClass<>("");
在这里例子中,编译器推断Integer为泛型类MyClass<X>正式参数化类型X的类型,推断String为该泛型类构造器的正式参数化类型T
的实际类型。
2.MyClass<Integer> myObject = new <String> MyClass<>("");
在这里例子中,编译器推断Integer为泛型类MyClass<X>真是参数化类型X的类型,同时这条语句显式的指定了构造器的正式参数化类型T
的实际类型。
5. Improved Compiler Warnings and Errors When Using Non-Reifiable Formal Parameters with Varargs Methods
不知道怎么翻译。 “当在可变长参数方法中使用不可具体化的参数时改良的警告和错误”,行么?
6.带有资源的try语句
The try-with-resources Statement
一个带有资源的try语句就是一个声明了一个或者多个资源的try语句,资源是指当程序结束后必须关闭的对象。带有资源的try语句
保证在语句结束的时候每个资源都会被关闭(调用其close()方法)。任何实现了java.lang.AutoCloseable 或者 java.io.Closeable接口的对象都可以被
用作为一个资源。
下面这个例子的作用是从一个文件中读取第一行。使用了一个BufferedReader从文件中读取数据,在这里BufferedReader就是一个在程序结束
后必须关闭的资源。
static String readFirstLineFromFile(String path) throws IOException {
try (BufferedReader br = new BufferedReader(new FileReader(path))) {
return br.readLine();
}
}
上面说到可以在try语句中声明一个或多个资源,下面就是一个声明了多个资源的try语句,它的功能是获得打包在zip文件中的所有
文件的文件名,然后把这些文件名保存到一个txt文件中。
public static void writeToFileZipFileContents(String zipFileName, String outputFileName)
throws java.io.IOException {
java.nio.charset.Charset charset = java.nio.charset.Charset.forName("US-ASCII");
java.nio.file.Path outputFilePath = java.nio.file.Paths.get(outputFileName);
// Open zip file and create output file with try-with-resources statement
try (
java.util.zip.ZipFile zf = new java.util.zip.ZipFile(zipFileName);
java.io.BufferedWriter writer = java.nio.file.Files.newBufferedWriter(outputFilePath, charset)
) {
// Enumerate each entry
for (java.util.Enumeration entries = zf.entries(); entries.hasMoreElements();) {
// Get the entry name and write it to the output file
String newLine = System.getProperty("line.separator");
String zipEntryName = ((java.util.zip.ZipEntry)entries.nextElement()).getName() + newLine;
writer.write(zipEntryName, 0, zipEntryName.length());
}
}
}
大家需要知道的是,一个带有资源的try语句和普通的try语句一样可以有catch和finally语句块,但是任何catch或者
finally块都是在所有的资源关闭后才执行的。
7.捕捉复合(Multiple)异常类型以及使用改良的类型检查重掷(Rethrowing)异常
在Java6以及以前版本一般我们这样捕获多个类型的异常:
catch (IOException ex) {
logger.log(ex);
throw ex;
catch (SQLException ex) {
logger.log(ex);
throw ex;
}
在Java7里可以这么干:
catch (IOException|SQLException ex) {
logger.log(ex);
throw ex;
}
下面看一个抛出异常的例子:
JDK6及以前版本:
static class FirstException extends Exception { }
static class SecondException extends Exception { }
public void rethrowException(String exceptionName) throws Exception {
try {
if (exceptionName.equals("First")) {
throw new FirstException();
} else {
throw new SecondException();
}
} catch (Exception e) {
throw e;
}
}
JDK7:
public void rethrowException(String exceptionName)
throws FirstException, SecondException {
try {
// ...
}
catch (Exception e) {
throw e;
}
}
分享到:
相关推荐
Java 新特性的pdf文档。Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。 Java 8 是oracle公司于2014年3月发布,可以看成是自Java 5 以 来最具革命性的版本。...工具与JVM带来了大量新特性
阐述了Java语言的各个方面,包括Java语言结构和工作原理的基本知识,用大量的实例讲述如何开发功能齐全的Java应用程序,以期帮助读者掌握Java语言的最新特性和Java类库中主要的功能包,积累Java应用环境的使用经验,...
3.5 java虚拟机中内置的安全特性 3.6 安全管理器和java api 3.7 代码签名和认证 3.8 一个代码签名示例 3.9 策略 3.10 保护域 3.11 访问控制器 3.11.1 implies()方法 3.11.2 栈检查示例 3.11.3...
java8,64位是非常厉害的java编写开发工具。java8,64位主要是为64位java用户设计的,为...带来一种新语言能将参数代码变为数据。 增加和修改了Java特性优化默认方法。 se平台新增预定义集,使应用无需部署在平台上。
使用Java语言编写的一款用于反映颜色变化的面板,也就是大家熟悉的颜色调色板演示程序。原理是初始化颜色选择按钮,然后为颜色选择按钮增加事件处理事件,最后实例化颜色选择器。 Java二进制IO类与文件复制操作...
使用Java语言编写的一款用于反映颜色变化的面板,也就是大家熟悉的颜色调色板演示程序。原理是初始化颜色选择按钮,然后为颜色选择按钮增加事件处理事件,最后实例化颜色选择器。 Java二进制IO类与文件复制操作...
数据结构Java语言描述课程实验设计(全文)全文共7页,当前为第1页。数据结构Java语言描述课程实验设计(全文)全文共7页,当前为第1页。数据结构Jv语言描述课程实验设计 数据结构Java语言描述课程实验设计(全文)全文共7...
C++和Java是两种非常流行的编程语言,它们之间有很多区别。在本文中,我们将讨论C++和Java之间的主要区别,并举例说明它们在开发代码方面的不同之处。 首先,C++是一种编译语言,而Java是一种解释语言。这意味着C++...
一、设计题目2 二、设计目的2 三、设计分析2 3.1可行性分析2 3.1.1技术上...7 4.5数据库结构设计7 4.5.1系统数据库性能需求7 4.5.2本系统数据库表设计中所遵守的基本原则7 4.5.3数据库需求分析8 4.5.4数据字典设计与...
天下陶网络商城Java源码是一款专业的电商平台源代码,基于Java语言开发,拥有良好的可扩展性和可靠性。它采用了先进的技术和架构,包括Spring Boot、MyBatis、Docker等,可以满足企业级应用的高性能、高并发、高可用...
今 年 6月 7日 ,由 SUN公 司 和 台 湾 经 济 事 务 部 信 息 发 展 局, 台湾信 息 技 术 研究 所 等 单 位 牵 头 ,成 立 了 一 个 "Java联 盟 ", 参 加 的 有 22个 在 台 湾相 当 著 名 的 计 算 机公 司 ,并 在 台 ...
它引入了众多新特性,包括 Lambda 表达式、函数接口、流处理等,为 Java 编程带来了极大的便利和提升。 其中最显著的特性是 Lambda 表达式,它提供了一种简洁、灵活的编程方式,使得 Java 编程可以更加函数式化。...
毫无疑问,Java 8发行版是自Java 5(发行于2004,已经...Java 8 为Java语言、编译器、类库、开发工具与JVM(Java虚拟机)带来了大量新特性。在这篇教程中,我们将一一探索这些变化,并用真实的例子说明它们适用的场景。
但这样做通常会导致丧失平台可移植性,通常是在特定的需求下进行,例如使用旧的其他语言的库、需要获得Java类库不支持的某种基于具体平台的特性、大量数学计算性能优化等。希望本文档会给有需要的朋友带来帮助;
毫无疑问,Java 8是自Java 5(2004年)发布以来Java语言最大的一次版本升级,Java 8带来了很多的新特性,比如编译器、类库、开发工具和JVM(Java虚拟机)。在这篇教程中我们将会学习这些新特性,并通过真实例子演示...
对Java语言的每个语法都提供了一个或多个例程讲解 大量使用流程图表示程序的执行过程,使用结构图表示程序的内部状态 每章最后都给出了典型的练习题,让读者及时练习,巩固提高,并提供了参考答案 目录 第1篇 ...
每一种语言的程序设计思想大同小异,只是一些由语言特性的而带来的细微差别,比如Java中的Interface,你几乎在以前的学习中没有碰到过。以下我仔细给你说几点: 1。我们必须明确一个大方向,也就是说现在面向对象...
每一种语言的程序设计思想大同小异,只是一些由语言特性的而带来的细微差别,比如Java中的Interface,你几乎在以前的学习中没有碰到过。以下我仔细给你说几点: 1。我们必须明确一个大方向,也就是说现在面向对象...
对于C或 C++程序员来说,学习这一章的内容将会感觉一帆风顺,因为这些语言特性的语法本质上与C 语言相同。对于没有C语言程序设计背景,但使用过其他程序设计语言(Visual Basic)的程序 员,仔细地阅读这一章是非常...