color=red]1、在switch语句中可以使用字符串类型[/color]
请看下例
public class SwitchSamlpe {
public static void main(String[] args){
SwitchSamlpe.show("man");
SwitchSamlpe.show("\u006d\u0061\u006e");
}
public static void show(String gender){
switch(gender){
case "man":
System.out.println("hi guy");
break;
case "woman":
System.out.println("hi beauty");
break;
default:
System.out.println("hi ");
}
}
}
运行以后会同时打出2个hi guy 可以看出直接用unicode编码会造成很多误会。而这个实现的核心也是把string转化成了对应的哈希值而已。
2、二进制添加新的表述方式
public class LiteralSamlpe {
public static void main(String[] args){
System.out.println(0b10011);
System.out.println(0B10011);
}
}
增加OB以及Ob来表示2进制
3、数值下面可以使用下划线来表示
public class LiteralSamlpe {
public static void main(String[] args){
System.out.println(150_000_000);
}
}
为了好区分增加了下划线来表示以上依然输出150000000
4、java7对异常的处理
先看以下例子
public class ExceptionSample {
@SuppressWarnings("finally")
public static void main(String[] args){
try{
throw new IOException("main exception");
}catch (Exception e) {
throw new RuntimeException(e.getMessage());
}finally{
try {
throw new IOException("sub exception");
} catch (IOException e) {
throw new RuntimeException(e.getMessage());
}
}
}
}
运行以后只能显示sub exception 这一个异常。那是因为在try中的主要异常被后面的finally中的sub异常所覆盖,这样会导致程序员判断出错
java7提供了 addSuppressed 方法来解决这个问题
public class ExceptionSampleJava7 {
public static void main(String[] args) {
RuntimeException e1 = null;
try{
throw new IOException("main exception");
}catch (Exception e) {
e1= new RuntimeException(e.getMessage());
throw e1;
}finally{
try {
throw new IOException("sub exception");
} catch (final IOException e) {
e1.addSuppressed(e);
}
}
}
}
Exception in thread "main" java.lang.RuntimeException: main exception
at com.xxx.java7.ExceptionSampleJava7.main(ExceptionSampleJava7.java:11)
Suppressed: java.io.IOException: sub exception
at com.xxx.java7.ExceptionSampleJava7.main(ExceptionSampleJava7.java:15)
运行以上代码就可以发现不但main异常被没被覆盖 同时也很清楚的记录着被suppressed的异常。
5、java7 允许一个catch捕获多个异常
public class ExceptionSampleJava7 {
public static void main(String[] args) {
try {
throw new IOException("exception");
} catch (IOException | RuntimeException e) {
e.getStackTrace();
}
}
}
这样可以大大减少我们代码的复杂度。但是注意在前面的异常必须小于后面的异常。
6、增加try-with-resources传统的IO操作我们都可以对流进行关闭
如下
public class TryWithSample {
@SuppressWarnings("unused")
private static void read(File source) {
InputStream fis = null;
try {
fis = new FileInputStream(source);
}
catch (Exception e) {
e.printStackTrace();
} finally {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
这样在代码上面十分不美观 而且增加复杂度。
java7 为我们提供这样的书写方式
public class TryWithSample {
@SuppressWarnings("unused")
private static void read(File source) throws IOException {
try(InputStream fis = new FileInputStream(source)) {
}
}
}
这样JAVA会自动关闭在try中申请的管道。。
分享到:
相关推荐
### Java系列JDK 1.8 新特性之 Lambda表达式 #### 1、Lambda表达式介绍 Lambda表达式是Java 8中引入的一个重要新特性,它允许开发者以一种更加简洁的方式编写函数式接口实现代码。Lambda表达式本质上是一个匿名...
总的来说,构建一个Java实现的语法分析器涉及到对编译原理的深入理解,包括词法分析、语法分析的理论和技术,以及如何利用Java语言特性来实现这些概念。在这个过程中,开发者需要考虑如何有效地处理源代码的结构,...
参考《Java注解》第三章内容四. 接口默认方法——Java也会出现多继承问题Java8新特性default关键字,引出Java多继承问题五. Java8新特性
1. **平台无关性**:Java的跨平台特性源于其虚拟机(JVM,Java Virtual Machine),使得Java程序能在任何安装了JVM的设备上运行。 2. **类加载机制**:Java通过类加载器动态加载类,提高了程序的灵活性和扩展性。 3....
这份“java基础语法PPT”涵盖了学习Java编程所必需的基本概念和语法,是初学者入门和提升的重要参考资料。以下是该PPT可能包含的主要知识点: 1. **Java简介**:Java是由Sun Microsystems(现为Oracle Corporation...
这份"java语法大全"文档,结合了“java语法”,“java编程基础”,以及“java入门”等核心主题,旨在为初学者提供全面的学习资源,帮助他们理解和掌握Java语言的基本概念和高级特性。 首先,Java语法是学习Java的...
通过这些章节的学习,你可以逐步建立起对Java编程的基础认识,了解如何编写有效的Java代码,并为深入学习高级特性,如多线程、网络编程、数据库操作、反射等打下坚实的基础。实际操作这些源代码,亲自动手实践,是...
Java8是Java编程语言的一次重大更新,引入了许多新的特性和功能,极大地提升了开发效率和代码的可读性。以下是一些主要的Java8新特性详解: 1. **Lambda表达式**:Lambda表达式是Java8中最显著的新特性,它为Java...
Java语法是编程的基础,它规定了如何组织代码以实现特定功能。在Java中,程序由类(class)组成,每个类都包含方法(methods)和属性(fields)。学习Java语法首先要理解基本数据类型,如整型(int)、浮点型(float...
### Java基础语法教案知识点解析 #### 一、Java开发环境搭建 **1.1 Java语言概述** - **视频摘要:** 引入Java语言的历史和发展,包括它的起源、发展历程及其广泛的应用场景。通过介绍Java的特点(如面向对象、跨...
Java 8,作为Java语言的一个重要更新版本,自2014年发布以来,引入了大量新特性,使得Java更加现代化、简洁和功能强大。本文将全面介绍Java 8的几项核心新特性,包括Lambda表达式、函数式接口、方法引用与构造器引用...
总之,Java版的语法分析程序是一个用于理解和表示源代码结构的关键工具,它利用了Java的强大功能和Swing的可视化特性,为开发者提供了一个直观的方式来理解和调试代码。这样的工具对于教学、软件开发以及编译器设计...
2020年的Java 11、12、13和14版本也不例外,这些更新引入了多个引人注目的新特性。下面,我们将详细探讨这些版本中的关键变化。 首先,让我们从Java 11开始,这是长期支持(LTS)版本。其中最重要的新特性是HTTP...
10. **字符串**:Java中的String类是处理文本的重要工具,会介绍其特性、常用方法以及字符串操作。 11. **类与对象**:Java是面向对象的语言,讲解类的定义、对象的创建,以及封装、继承和多态等面向对象的概念。 ...
### Java基础语法汇总 本文将基于给定的文件信息,对Java的基础语法进行一次全面而深入的解析。Java作为一种广泛使用的编程语言,在软件开发、Web应用、移动应用等多个领域都有着重要的地位。对于初学者而言,掌握...
### Java 7新特性中文介绍 #### 一、概述 随着Java 7的发布,业界迎来了一次重大的技术革新。作为一款原本就极其强大的编程语言,Java在Oracle的重组之后,不仅保持了其原有的优势,还增添了许多令人期待的新特性...
在编程世界中,语法糖(Syntactic Sugar)是一种设计语言时引入的特性,它不增加新的功能,而是提供更简洁、更易读的语法,使得编写代码更为方便。这一概念由Peter J. Landin提出,自那时以来,许多编程语言都采用了...
内容概要:本文全面介绍了Java的基础语法和高级特性,包括Java的发展历程、开发环境搭建、基本语法、数据类型、变量分类、数组操作、运算符、类和对象、方法与函数、异常处理、继承、多态、封装、抽象类与接口等内容...
Java和C#是当今流行的两种面向对象的编程语言,它们都源自C语言的语法风格,但各自发展出了独特的特性。以下是对Java和C#之间语法规范的详细比较: 1. 编译及启动程序 - Java使用`javac`进行编译,C#使用`csc`。 ...