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 7,也称为Java SE 7 (Java Standard Edition 7),是Oracle公司于2011年发布的一个重要更新,带来了许多新特性和改进,对Java编程语言的发展具有里程碑式的意义。 在本教程中,你将深入学习Java的基础概念和...
### Java 7新特性中文介绍 #### 一、概述 随着Java 7的发布,业界迎来了一次重大的技术革新。作为一款原本就极其强大的编程语言,Java在Oracle的重组之后,不仅保持了其原有的优势,还增添了许多令人期待的新特性...
Java 7,又称为Java SE 7 (Java Standard Edition 7),是Java的重要里程碑,它在2011年发布,带来了许多新特性和性能优化。以下是一些关键的Java 7特性: 1. **多语言支持**:Java 7引入了新的`try-with-resources`...
Java 7,也被称为JDK 7(Java Development Kit 7),是Java编程语言的一个重要版本,由Oracle公司发布。这个版本带来了许多重要的更新和改进,旨在提高开发者的生产力和程序的性能。"Java7 最新原版API"指的是Java 7...
Java 8,作为Java语言的一个重要更新版本,自2014年发布以来,引入了大量新特性,使得Java更加现代化、简洁和功能强大。本文将全面介绍Java 8的几项核心新特性,包括Lambda表达式、函数式接口、方法引用与构造器引用...
综上所述,Java的学习和应用是一个全面而深入的过程,需要系统地掌握其语言特性、核心API和相关技术。加入学习群可以帮助学习者快速解决遇到的问题,并与同道中人共同进步。而《Java程序设计语言-第4版》等书籍,则...
Java作为世界上最受欢迎的编程语言之一,其每个新版本都会带来一系列增强和改进,以提高开发者的效率和程序的性能。2020年的Java 11、12、13和14版本也不例外,这些更新引入了多个引人注目的新特性。下面,我们将...
规范详细列出了Java SE 7的主要特性,其中一项重大更新就是支持动态语言特性(JSR 292),它为Java平台带来动态类型语言支持。通过Project Coin(JSR 334),Java 7还对语言进行了小规模的改进,例如改进了switch...
Java 7,全称为Java Platform, Standard Edition 7 (Java SE 7),是Java编程语言的一个重要版本,由Oracle公司发布于2011年。这个版本带来了许多新特性、改进和优化,对开发者的工作效率和程序性能都有显著提升。在...
《JAVA语言中文教程》是一份详尽的编程学习资料,主要介绍了JAVA语言的基础知识与面向对象的编程概念,适合初学者以及有一定编程基础的学习者深入理解JAVA语言的特性和编程技巧。 ### 第一章:JAVA概述 #### JAVA...
Java 7,全称为Java SE 7 (Java Platform, Standard Edition 7),是Java编程语言的一个重要版本,由Oracle公司发布于2011年。这个版本带来了许多新特性和改进,旨在提升开发者效率和程序性能。以下是Java 7开发文档...
Java 新特性的pdf文档。Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。 Java 8 是oracle公司于2014年3月发布,可以看成是自Java 5 以 来最具革命性的版本。...工具与JVM带来了大量新特性
Java SE 6,也被称为Java Development Kit (JDK) 6,是Java平台的一个重要版本,带来了许多新特性和改进,极大地提升了开发人员的工作效率和应用程序的性能。在这个版本中,Oracle公司(当时还是Sun Microsystems)...
Java语言的特点和优势使其在多个领域中扮演着重要角色,包括但不限于Web应用、Android移动应用、大数据处理、云计算、物联网(IoT)等。学习Java语言程序设计,意味着你需要掌握基本语法、面向对象编程概念、异常处理...
Java 的起源可以追溯到1991年,当时 **James Gosling** 开始了一个名为“Oak”的项目,目的是为机顶盒设计一种新的编程语言和虚拟机。这个名字来源于Sun Microsystems办公室外的一棵橡树(Oak Tree)。随着项目的...
Java 7源代码是Java编程语言的一个重要版本,它的发布为开发者带来了许多新的特性和改进。这个源代码包含了Java开发工具包(JDK)的核心组件,涵盖了从基础库到高级功能的各种模块。以下是对这些核心组件的详细解读...
总之,Java 7作为Java发展的一个重要里程碑,它的新特性大大增强了语言的功能和易用性。通过深入学习和实践,开发者可以充分利用这些新特性,提高开发效率,写出更加高效和健壮的代码。《深入理解Java 7》这本书无疑...