- 浏览: 12767 次
- 性别:
- 来自: 南京
最新评论
转自:http://uuhorse.iteye.com/blog/1704118
1. switch中增加对String类型的支持。
编译器在编译时先做处理:
①case只有一种情况,直接转成if;
②如果只有一个case和default,则直接转换为if...else...;
③有多个case,先将String转换为hashCode,然后对应的进行处理,JavaCode在底层兼容Java7以前版本。
2. 数字字面量的改进
①增加二进制表示
Java7前支持十进制(123)、八进制(0123)、十六进制(0X12AB)
Java7增加二进制表示(0B11110001、0b11110001)
②数字中可添加分隔符
Java7中支持在数字量中间增加'_'作为分隔符,更直观,如(12_123_456),下划线只能在数字中间,编译时编译器自动删除数字中的下划线。
3. 异常处理
①Throwable类增加addSuppressed方法和getSuppressed方法,支持原始异常中加入被抑制的异常。
异常抑制:在try和finally中同时抛出异常时,finally中抛出的异常会在异常栈中向上传递,而try中产生的原始异常会消失。
在Java7之前的版本,可以将原始异常保存,在finally中产生异常时抛出原始异常:
在Java7中的版本,可以使用addSuppressed方法记录被抑制的异常:
②catch子句可以同时捕获多个异常
③try-with-resources语句
Java7之前需要在finally中关闭socket、文件、数据库连接等资源;
Java7中在try语句中申请资源,实现资源的自动释放(资源类必须实现java.lang.AutoCloseable接口,一般的文件、数据库连接等均已实现该接口,close方法将被自动调用)。
try子句中可以管理多个资源:
4. 变长参数方法的优化
Java7之前版本中的变长参数方法:
当参数为不可具体化的类型时,如List,编译器将产生警告,需要使用@SuppressWarnings("unchecked")注解声明;Java7中使用@SafeVarargs注解抑制编译器警告。
1. switch中增加对String类型的支持。
public String generate(String name, String gender) { String title = ""; switch (gender) { case "男": title = name + " 先生"; break; case "女": title = name + " 女士"; break; default: title = name; } return title;
编译器在编译时先做处理:
①case只有一种情况,直接转成if;
②如果只有一个case和default,则直接转换为if...else...;
③有多个case,先将String转换为hashCode,然后对应的进行处理,JavaCode在底层兼容Java7以前版本。
2. 数字字面量的改进
①增加二进制表示
Java7前支持十进制(123)、八进制(0123)、十六进制(0X12AB)
Java7增加二进制表示(0B11110001、0b11110001)
②数字中可添加分隔符
Java7中支持在数字量中间增加'_'作为分隔符,更直观,如(12_123_456),下划线只能在数字中间,编译时编译器自动删除数字中的下划线。
3. 异常处理
①Throwable类增加addSuppressed方法和getSuppressed方法,支持原始异常中加入被抑制的异常。
异常抑制:在try和finally中同时抛出异常时,finally中抛出的异常会在异常栈中向上传递,而try中产生的原始异常会消失。
在Java7之前的版本,可以将原始异常保存,在finally中产生异常时抛出原始异常:
public void read(String filename) throws BaseException { FileInputStream input = null; IOException readException = null; try { input = new FileInputStream(filename); } catch (IOException ex) { readException = ex; //保存原始异常 } finally { if (input != null) { try { input.close(); } catch (IOException ex) { if (readException == null) { readException = ex; } } } if (readException != null) { throw new BaseException(readException); } } }
在Java7中的版本,可以使用addSuppressed方法记录被抑制的异常:
public void read(String filename) throws IOException { FileInputStream input = null; IOException readException = null; try { input = new FileInputStream(filename); } catch (IOException ex) { readException = ex; } finally { if (input != null) { try { input.close(); } catch (IOException ex) { if (readException != null) { //此处的区别 readException.addSuppressed(ex); } else { readException = ex; } } } if (readException != null) { throw readException; } } }
②catch子句可以同时捕获多个异常
public void testSequence() { try { Integer.parseInt("Hello"); } catch (NumberFormatException | RuntimeException e) { //使用'|'分割,多个类型,一个对象e } }
③try-with-resources语句
Java7之前需要在finally中关闭socket、文件、数据库连接等资源;
Java7中在try语句中申请资源,实现资源的自动释放(资源类必须实现java.lang.AutoCloseable接口,一般的文件、数据库连接等均已实现该接口,close方法将被自动调用)。
public void read(String filename) throws IOException { try (BufferedReader reader = new BufferedReader(new FileReader(filename))) { StringBuilder builder = new StringBuilder(); String line = null; while((line=reader.readLine())!=null){ builder.append(line); builder.append(String.format("%n")); } return builder.toString(); } }
try子句中可以管理多个资源:
public void copyFile(String fromPath, String toPath) throws IOException { try ( InputStream input = new FileInputStream(fromPath); OutputStream output = new FileOutputStream(toPath) ) { byte[] buffer = new byte[8192]; int len = -1; while( (len=input.read(buffer))!=-1 ) { output.write(buffer, 0, len); } } }
4. 变长参数方法的优化
Java7之前版本中的变长参数方法:
public int sum(int... args) { int result = 0; for (int value : args) { result += value; } return result; }
当参数为不可具体化的类型时,如List,编译器将产生警告,需要使用@SuppressWarnings("unchecked")注解声明;Java7中使用@SafeVarargs注解抑制编译器警告。
@SafeVarargs public static <T> T useVarargs(T... args) { return args.length > 0 ? args[0] : null; }
发表评论
-
Java中的四种引用
2018-03-22 15:12 4781、强引用(Strong Referen ... -
java中try、catch、finally中含有return的简单总结
2017-06-01 14:24 549try语句在返回前,将其他所有的操作执行完,保留好要返回的值 ... -
java泛型总结
2016-04-20 13:26 371泛型(generic):是指参数化类型的能力。可以定义泛型类 ... -
对象的序列化与反序列化
2016-04-18 10:22 487序列化:把对象转换为字节序列的过程 反序列化:把字节序列恢 ... -
覆盖hashCode方法
2016-04-15 13:44 601覆盖hashCode方法规约: ... -
通用equals方法
2016-04-14 17:50 5071.1 equals方法 覆盖equals方法必须遵守的 ... -
java对象的创建建议
2016-04-14 16:39 3531.1 考虑用静态工厂方法代替构造器 示例: publi ... -
枚举类型
2016-04-06 15:50 01.1 基本enum特性 public e ... -
String深入理解
2016-04-05 15:33 462String对象是不可变的,每个看起来会修改String对象 ... -
java内部类详解
2016-04-01 15:59 463内部类 可以将一个类 ... -
理解java中的抽象类与接口
2016-03-31 21:42 440抽象方法:仅有声明没 ... -
面向对象四大基本特征
2016-03-31 14:48 426抽象: 抽象就是找出一 ... -
java回调机制
2016-03-31 09:56 413所谓回调:就是A类中调用B类中的某个方法C,然后B类中反过来调 ... -
jdk动态代理
2016-03-30 17:28 428代理模式: 为其他对象提供一种代理,并以控制对这个对象的访问。 ... -
java继承与多态
2016-03-30 11:33 515继承 在java中使用extends ... -
final和static浅析
2016-03-30 10:47 296final 通常代表“这是无法改变的”。 一般使用到final ... -
java数据存储
2016-03-28 22:42 342Java中数据存储区域包括: 1.寄存器:最快的存储区,由编 ... -
java访问控制权限
2016-03-28 22:34 369java访问控制权限:private,protected,包 ... -
java基本类型
2016-03-28 22:31 315基本类型 java确定了每种基本类型的存储空间大小 基本类型 ...
相关推荐
### 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和C#是当今流行的两种面向对象的编程语言,它们都源自C语言的语法风格,但各自发展出了独特的特性。以下是对Java和C#之间语法规范的详细比较: 1. 编译及启动程序 - Java使用`javac`进行编译,C#使用`csc`。 ...
根据提供的文件信息,本文将对Java语法进行详细的解析与总结,包括基本的语法结构、关键字、数据类型、变量声明及转换等内容。 ### Java语言概述 Java是一种广泛使用的面向对象编程语言,由Sun Microsystems开发并...