`
donald3003a
  • 浏览: 64408 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论
  • 淼淼E馒头: 这举列有点不恰当啊。。电影人和不同类型的电影。是两个不同概念 ...
    合成模式

JAVA7 语法新特性

阅读更多
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中申请的管道。。
分享到:
评论

相关推荐

    Beatles9527#StudyNotes#_21Java8语法新特性1

    参考《Java注解》第三章内容四. 接口默认方法——Java也会出现多继承问题Java8新特性default关键字,引出Java多继承问题五. Java8新特性

    尚硅谷Java视频Java8新特性视频教程

    尚硅谷_Java8新特性_Lambda 基础语法 ·04. 尚硅谷_Java8新特性_Lambda 练习 ·05. 尚硅谷_Java8新特性_四大内置核心函数式接口 ·06. 尚硅谷_Java8新特性_方法引用与构造器引用 ·07. 尚硅谷_Java8新特性_创建 ...

    Java8语法总结

    学习java8新特性,尤其是lambda和流式编程,学习过程中总结的笔记

    Java9新特性

    本套《Java9新特性》视频涵盖oracle公司2017年9月公布的java 9 新特性的核心内容。 主要包含:模块化系统,REPL工具:jshell命令,多版本兼容jar包,语法的新变化:接口私有方法、异常处理、钻石操作符、String存储...

    尚硅谷Java9新特性视频

    本套《Java9新特性》视频涵盖oracle公司2017年9月公布的java 9 新特性的核心内容。 主要包含:模块化系统,REPL工具:jshell命令,多版本兼容jar包,语法的新变化:接口私有方法、异常处理、钻石操作符、String存储...

    新手学Java7编程(第5版)

    之后,《新手学java7编程(第5版)》介绍了java的一些高级特性,包括多线程程序设计和泛型。最后以对swing的介绍结束了全书。本教程节奏轻快,可以帮助读者快速掌握java程序设计。  《新手学java 7编程(第5版)》特色 ...

    JDK7新特性(完整篇)

    1.2 JDK7新特性<二> 语法 . . . . . . . . . . . . . 1.3 JDK7新特性<三> JDBC4.1 . . . . . . . . . . 1.4 JDK7新特性<四> NIO2.0 文件系统 . . . 1.5 JDK7新特性<五> fork/join 框架 . . . . . 1.6 JDK7新特性...

    JAVA简介、JAVA主要特性、JAVA基础语法

    JAVA

    bcompare反编译java8新特性文件插件

    现有becompare3/4对于java8 新特性lamda表达式文件无法反编译进行数据比对,此插件可解决此问题。

    尚硅谷Java11新特性教程.txt

    尚硅谷Java11新特性教程(包含笔记、代码、视频)。新的局部变量的语法、更方便的调试运行程序的方式jshell及直接运行源代码、令人瞩目的ZGC, JFR、全新HttpClient API、兼容Unicode10的新的字符串API等。

    java1.5新特性

    java1.5之后的新特性: 1,枚举(enum) 作用:一般用于代表一组相同类型的常用常量。 原理:语法结构与java类的语法不一样,但是经过编译器编译之后产生的是一个class文件。该class文件经过反编译之后实际上是...

    《Java 核心技术 卷I 》第12版,涵盖Java17新特性(英文版)

    新版延续之前版本的优良传统,用数百个实际的工程案例,全面系统地讲解了Java语言的核心概念、语法、 重要特性、 开发方法。 着力让读者在充分理解Java语言和Java类库的基础上,灵活应用Java提供的高级特性,具体...

    Java核心技术 第12版 开发基础+高级特性 英文原版

    新版延续之前版本的优良传统,用数百个实际的工程案例,全面系统地讲解了Java语言的核心概念、语法、 重要特性、 开发方法。 着力让读者在充分理解Java语言和Java类库的基础上,灵活应用Java提供的高级特性,具体...

    Java基础语法面试题.docx

    Java基础语法面试题资源通常是指帮助准备Java编程面试的问题集合,涵盖了Java编程语言的基础概念、语法、特性和常见问题。这些资源可以帮助面试者巩固和扩展他们的Java知识,准备应对面试过程中的技术问题。 这些...

    本课程是Java从入门到精通的系列课程,涵盖了Java的基础语法、面向对象思想、集合等高级特性、Java8新特性,内容丰富多样

    本课程是Java从入门到精通的系列课程,涵盖了Java的基础语法、面向对象思想、集合等高级特性、Java8新特性、多线程、JVM与性能调优方法等知识点,内容丰富多样。整个过程中,不仅仅有知识的传递,更注重思想的理解和...

    深入理解java7

    《深入理解Java 7:核心技术与最佳实践》的主要内容可分为三大部分:第一部分是1-6章,全面阐释Java 7在语法、JVM、类库和API等方面的所有重要新功能和新特性,掌握这部分内容有助于大幅度提升编码效率和提高代码质量...

    java ee练习代码,基础语法+高级特性 Java学习资料

    java ee练习代码,基础语法+高级特性 Java学习资料

    利用Idea重构功能及Java8语法特性优化深层嵌套代码

    当遇到深层嵌套代码,如for,if,lambda表达式或内部类及这些代码的组合,这时我们可以通过Java8的语法特性来进行优化。下面的代码是一个嵌套循环的示例。嵌套的for/if语句通畅可以通过Java8中的stream来替代。 上述...

    Java SE完整版精品优质课件 自学入门必看的优秀Java基础知识培训教案 第02章_Java基本语法2(共48页).pptx

    Java SE完整版精品优质课件 自学入门必看的优秀Java基础知识培训教案 ...第7章 Java集合 第8章 泛型 第9章 注解&枚举 第10章 IO 第11章 多线程 第12章 Java常用类 第13章 Java反射 第14章 网络编程

    Java SE完整版精品优质课件 自学入门必看的优秀Java基础知识培训教案 第02章_Java基本语法1(共99页).pptx

    Java SE完整版精品优质课件 自学入门必看的优秀Java基础知识培训教案 ...第7章 Java集合 第8章 泛型 第9章 注解&枚举 第10章 IO 第11章 多线程 第12章 Java常用类 第13章 Java反射 第14章 网络编程

Global site tag (gtag.js) - Google Analytics