`

第1章 初识Java7

    博客分类:
  • Java
 
阅读更多

第1章 初识Java 7

本章内容:
  • Java 既是编程语言, 也是平台 
  • 语法变一点, 能力强好多 
  • try-with-resources语句 
  • multi-catch提升异常处理能力
1.1 语言与平台
Java语言: Java语言是静态类型, 面向对象的语言. 它是人类可读的.
Java平台: 平台是提供运行时环境的软件. Java虚拟机(JVM)负责把类文件形式(人类不可读)的代码链接起来并执行. JVM不能直接解释Java语言的源文件, 你要先把源文件转换成类文件.
图1-1 Java源码被转换成.class文件, 在JIT编译前被加载处理
 
1.2 Coin项目: 浓缩的都是精华
创建Coin项目是为了反映Java语言中的微小变动. 项目的名字是个双关语--像硬币一样小的变化(small change comes as coins), 而"套用一句老话(to coin a phrase)指的是给Java,语言添加一个新的表达方式.
在技术圈子里, 这种文字游戏, 奇思妙想和躲不掉的恐怖双关语随处可见. 你可能已经对此已经习以为常了.
 
1.3 Coin项目中的修改
1.3.1 switch语句中的String
在Java6及之前, case语句中的常量只能是byte, char, short或int(也可以是对应的封装类型Byte, Character, Short和Integer)或枚举常量.
Java7规范中增加了String, 毕竟它也是常量类型.
1.3.2 更强的数值文本表示法
数字常量(如基本类型中的Integer)可以用二进制文本表示
在整型常量中可以使用下划线来提高可读性
1. 二进制文本
// 让int x用位模式表示十进制值102
int x = Integer.parseInt("1100110", 2);
// in Java 7
int x = 0b1100110;
2. 数字中的下划线
long anotherLong = 2_147_483_648L
int bitPattern = 0b0001_1100_0011_0010_1011_1010_0011
1.3.3 改善后的异常处理
异常处理有两处改进, multicatch 和 final 重抛.
代码清单1-1 在Java6中处理不同的异常
Java6CatchExample.java
代码清单1-2 在Java7中处理不同的异常
Java7CatchExample.java
try{
doSomethingWhichMightThrowIOException();
doSomethingElseWhichMightThrowSQLException();
} catch(final Exception e){  // 在Java 7中, 可以添加final
...
throw e
}
 
关键字final表明实际抛出的异常就是运行时遇到的异常--在上面的代码中就是IOException或SQLException. 这被称为 final重抛 , 这样就不会抛出笼统的异常类型, 从而避免在上层只能用笼统的catch捕获.
1.3.4 try-with-resources (TWR)
其基本设想是把资源(比如文件或类似的东西)的作用域限定在代码块内, 当程序离开这个代码块时, 资源会被自动关闭.
这是一项非常重要的改进, 因为没人能在手动关闭资源时做到100%正确.
代码清单1-3 Java 6中的资源管理语法
Java6ResourcesExample.java
Configuration.java
代码清单1-4 Java7中的资源管理语法
Java7CatchExample.java
这是资源自动化管理代码块的基本形式--把资源放在try的圆括号内.  在这段代码块中使用的资源在处理完成后会自动关闭.
要确保try-with-resources生效, 正确的做法是为各个资源声明独立的变量.
try( FileInputStream fin = new FileInputStream("someFile.bin");
    ObjectInputStream oin = new ObjectInputStream(fin) ){
...
}
而不是
try( ObjectInputStream in = new ObjectInputStream(new FileInputStream("someFile.bin")) ) {
...
}
TWR与AutoCloseable
目前TWR特性依靠一个新定义的接口实现AutoCloseable. TWR的try从句中出现的资源类都必须实现这个接口. Java7平台中的大多数资源类都被修改过, 已经实现了AutoCloseable接口.
Java7中还定义了其父接口. 但并不是全部资源相关的类都采用了这项新技术. 不过, JDBC4.1已经具备了这个特性.
然而在你自己的代码里, 在需要处理资源时, 一定要使用TWR, 从而避免在异常处理时出现bug.
希望你尽快使用try-with-resources, 把那些多余的bug 从代码库中赶走.
1.3.5 钻石语法(Improved Type Inference for Generic Instance Creation)
为泛型实例创建而做出的类型推断改进
Map<Integer, Map<String, String>> userLists = new HashMap<>();
// 而不必  Map<Integer, Map<String, String>> userLists = new HashMap<Integer, Map<String, String>>();
1.3.6 简化变参方法调用
 
语法糖(比如Java7中数字中的下划线)是描述一种语言特性的短语. 它表示这是冗余的语法--在语言中已经存在一种表示形式了--但语法糖用起来更便捷.
 
 
 
分享到:
评论

相关推荐

    第一章 初识Java1

    1.编写java源程序注意后缀名为java 2.使用javac命令编译源程序注意编译时需要跟上.java的后缀名 3.使用java命令运行编程生成的字节码文件.

    第1章--初识Java.ppt

    第1章--初识Java.ppt

    程序设计基础-第一章-初识Java.ppt

    程序设计基础-第一章-初识Java.ppt

    初识java.zip

    S1课程使用Java理解程序逻辑 第一章初识java教学演示案例/上机练习参考答案/课后作业参考答案 相关示例提供

    java ppt 第一章java概述

    Java程序设计实用教程》 第3版 叶核雅 第一章初识部分

    初识java笔记

    课堂笔记,第一次学习java的课堂笔记,第一次学习java的课堂笔记

    java程序设计实用教程课件

    共分16章:第1章 初识Java,第2章 初识对象和简单,第3章运算符、表达式和语句,第4章类与对象,第5章子类与继承,第6章,第7章 数组与枚举,第8章 内部类与异常,第9章 常用实用类,第10章 输入、输出流等

    第1课 part2初识java2.exe

    第1课 part2初识java2.exe

    零基础学Java Web开发

     第1章 初识Java语言  第2章 Java基础语法  第3章 Java面向对象编程  第二篇 JSP基本知识  第4章 JSP基本语法  第5章 JSP内置对象  第6章 JSP与JavaBean  第7章 JSP与JDBC  第8章 Servlet编程  ...

    Java从入门到精通-第一章

    Java从入门到精通-第一章 初识庐山真面目──Java 6 PPT

    java2 实用教程(第三版) 实验指导 上机实验1 初识java

    java2 实用教程(第三版) 实验指导 上机实验1 初识java 一个简单的应用程序 一个简单的java applet程序 联合编译

    day02(初识Java)_第一版.rar

    day02(初识Java)_第一版.rar

    初识java,用springBoot学习java.rar

    JDK:java开发工具包,包含进行java开发的工具和JRE,如果想要进行java...第一个JAVA程序HelloWorld 1.Java程序的最小单位是“类”,一个Java程序至少包含一个类。 2.Java程序的入口是main函数,main函数的写法是固定的

    第9章 初识Redis Cluster.rar

    一站式学习Redis 从入门到高可用分布式实践(九) 包含Redis基础,使用经验介绍、Java,Python客户端示范、Redis使用规范,由浅入深讲解并伴有企业中Redis开发的相关项目以及大规模Redis的实战经验,是开发和运维...

    java初识数据类型

    java初识编程_原始数据类型:步入编程的第一步

    编程实践:Java进阶100例

    第一章:Java入门; 第二章:MyEclipse的基本使用; 第三章:Java基础语法; 第四章:数组的应用; 第五章:面向对象的Java编辑; 第六章:接口与内部类; 第七章:集合的应用; 第八章:异常和反射; 第九章:初识...

    第1章 Redis初识.rar

    一站式学习Redis 从入门到高可用分布式实践(一) 包含Redis基础,使用经验介绍、Java,Python客户端示范、Redis使用规范,由浅入深讲解并伴有企业中Redis开发的相关项目以及大规模Redis的实战经验,是开发和运维...

    Java程序设计实用教程

    Java程序设计实用教程PPT演示 第1章初识Java语言 本章要点 1.1 第一个Java应用程序 1.2 第一个Java小程序 习题 1

    初识数组(java) 第一回

    初识数组(Java) 第一回数组的概念数组的特点数组的初始化方式数组的使用 数组的概念 数组的概念:是一种容器,可以同时存放多个数据值; 数组的特点 数组的特点: 数组是一种引用数据类型; 数组当中的多个数据,...

Global site tag (gtag.js) - Google Analytics