第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中处理不同的异常
代码清单1-2 在Java7中处理不同的异常
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中的资源管理语法
代码清单1-4 Java7中的资源管理语法
这是资源自动化管理代码块的基本形式--把资源放在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中数字中的下划线)是描述一种语言特性的短语. 它表示这是冗余的语法--在语言中已经存在一种表示形式了--但语法糖用起来更便捷.
相关推荐
- JVM(Java虚拟机)是Java程序执行的基础,它负责将源代码文件(`.java`文件)编译成字节码文件(`.class`文件),这些字节码文件可以在任何支持JVM的平台上运行,从而实现了Java的“一次编写,到处运行”的特性。...
第1章--初识Java.ppt
程序设计基础-初识Java 本章目标: * 会开发简单的Java程序 * 会使用输出语句在控制台输出信息 * 熟悉MyEclipse开发环境 1.1 开发第一个Java程序 * 集成开发环境(IDE)是一类软件,它将程序开发环境和程序调试...
1. **EL(Expression Language)**:一种简洁的表达式语言,用于访问JavaBean或其他Java对象的属性,增强了数据绑定能力。 2. **JSTL(JavaServer Pages Standard Tag Library)**:标准标签库,提供了一系列预定义...
Java程序设计实用教程》 第3版 叶核雅 第一章初识部分
课堂笔记,第一次学习java的课堂笔记,第一次学习java的课堂笔记
第一章"初识Java"通常会涵盖以下基础概念和知识点: 1. **Java的历史与特点**:Java由Sun Microsystems的詹姆斯·高斯林(James Gosling)等人于1995年创建,设计目标是“一次编写,到处运行”。Java具有安全性、...
共分16章:第1章 初识Java,第2章 初识对象和简单,第3章运算符、表达式和语句,第4章类与对象,第5章子类与继承,第6章,第7章 数组与枚举,第8章 内部类与异常,第9章 常用实用类,第10章 输入、输出流等
第1课 part2初识java2.exe
面向对象是Java语言的核心思想之一,本章节将详细介绍面向对象的概念、类的格式、方法、构造器和this关键字等相关知识点。 一、面向对象概念 面向对象是Java语言的设计模型之一,它强调对象之间的交互和协作。面向...
### 初识JAVA的知识:配置Java环境变量于Windows 7 #### 一、Java与环境变量的重要性 Java作为一门跨平台的编程语言,其运行环境的配置至关重要。无论是开发还是运行Java程序,都需要确保系统中正确设置了Java环境...
【初识Java】是学习Java编程语言的...总的来说,初识Java的学习内容广泛,涵盖Java语言基础、面向对象编程、异常处理、输入输出、集合框架等多个方面,对于初学者来说,掌握这些基础知识是成为合格Java程序员的第一步。
上机实验1主要围绕“初识Java”这一主题展开,旨在帮助读者理解Java的基本概念、环境搭建以及编写第一个Java程序的过程。 一、Java语言简介 Java是一种面向对象的、跨平台的编程语言,由Sun Microsystems公司(现已...
【Java数组初识与排序】 在Java编程语言中,数组是一种非常重要的数据结构,它允许我们在同一时间存储多个相同类型的数据。本章将详细介绍数组的概念、应用、排序算法以及多维数组。 ### 1. 数组概念 1.1 为什么...
JDK:java开发工具包,包含进行java开发的工具和JRE,如果想要进行java...第一个JAVA程序HelloWorld 1.Java程序的最小单位是“类”,一个Java程序至少包含一个类。 2.Java程序的入口是main函数,main函数的写法是固定的
了解Java的历史、发展以及其在软件开发中的重要地位,是初学者入门的第一步。 2. **环境搭建**:安装Java Development Kit (JDK)并配置环境变量,这是每个Java开发者必备的基础技能。学会设置JAVA_HOME、Path等环境...
在本章"初识J2EE"中,我们将深入学习Java企业版(J2EE)的基础知识,包括如何搭建一个有效的开发和运行环境。J2EE是一个由Oracle公司提供的用于构建分布式、多层的企业级应用程序的平台,它包含了多种服务、API和...
一站式学习Redis 从入门到高可用分布式实践(九) 包含Redis基础,使用经验介绍、Java,Python客户端示范、Redis使用规范,由浅入深讲解并伴有企业中Redis开发的相关项目以及大规模Redis的实战经验,是开发和运维...