`
frank1998819
  • 浏览: 731482 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类

Java 9 新特性,看这里就明白了(转)

    博客分类:
  • Java
 
阅读更多

1、Java9 新特性之---目录结构 

包含jdk8及以前的jdk版本,所有目录结构以及目录含义如图: 

 


jdk9之后,目录结构发生变化如图: 


这个新特性只要了解下就可以了,这个目录结构是方便为了接下来新特性做保证 

2、Java9新特性之---JShell工具 

怎么理解,怎么用呢?这个只是针对于java9来说,相当于cmd工具,你可以和cmd一样,直接写方法等等,不过我认为只是适用于初学者做一些最简单的运算和写一些方法: 

在cmd中打开这个工具: 


进入工具后可以做一些简单的java操作 


等等,我认为只适用于初学者学习java不用其他编辑工具就可以学习java 

3、Java9新特性之---模块化 

一个大型的项目,比如淘宝商城等,都会包含多个模块,比如订单模块,前台模块,后台管理模块,广告位模块,会员模块.....等等,各个模块之间会相互调用,不过这种情况下会很少,只针对特殊情况,如果一个项目有30个模块系统进行开发,但是只要某个单独模块运行时,都会带动所有的模块,这样对于jvm来说在内存和性能上会很低,所以,java9提供了这一个特性,某一个模块运行的时候,jvm只会启动和它有依赖的模块,并不会加载所有的模块到内存中,这样性能大大的提高了。写法上如下: 


一个项目中的两个模块,模块之间通过module-info.java来关联,在IDEA编辑器右键创建package-info.java 


在这个两个模块java9Demo和java9Test中,java9demo编写一个实体类Person,在java9Test调用这样一个过程 
这个是java9Demo 将 java9Test 模块需要的文件导出 exports 把它所在的包导出 


然后在java9Test模块中创建一个package-info.java,引入java9Demo模块导出包名 


这样就可以直接在java9Test中引入Person实体类了,这只是一个简单的例子。exports 控制着那些包可以被模块访问,所以不被导出的包不能被其他模块访问 

4、Java9新特性之---多版本兼容Jar包 

怎么理解呢? 

好多公司用的jdk大部分还是老版本,jdk6,7 都有,他们都不敢升级主要是因为兼容的问题,但是java9做到了这一点,就是不管公司的项目是用的java6,7,8甚至5,他都可以兼容不出错,打个比方,你之前用的是iphone5,现在出现了iPhone6,iphone7,iphon8和iphone9,但是你不敢买9,因为你自己已经适应了iphone5的所有手机的运行流程,6,7,8每个手机的运行流程不一样,但是这个9很强大,它能够识别你现在所用的版本iphone是5,所以当你升级到iphone9的时候,你的这个手机运行流程还是iphone5的流程,只是在原有基础上拥有了更多的iphone9的所有优势。 

5、Java9新特性之---接口Interface的升级 



6、Java9新特性之---钻石操作符的升级 



7、Java9新特性之---异常处理try升级 

首先看下jdk6,7,8,9 的try catch的比较 
Java6处理方式: 


java7,8 共同的处理方式: 


java9的处理方式: 


这下子应该一幕了然了吧 

8、Java9新特性之---特殊标识符增加限制 

java8 之前 String _ ="hello"; 这样的标识符可以用,java9就用不到。 

9、Java9新特性之---String底层存储结构更换 

java8之前 String的底层结构类型都是 char[] ,但是java9 就替换成 byte[] 这样来讲,更节省了空间和提高了性能 

 


之所以替换是因为 之前一直是最小单位是一个char,用到两个byte,但是java8是基于latin1的,而这个latin1编码可以用一个byte标识,所以当你数据明明可以用到一个byte的时候,我们用到了一个最小单位chat两个byte,就多出了一个byte的空间。所以java9在这一方面进行了更新,现在的java9 是基于ISO/latin1/Utf-16 ,latin1和ISO用一个byte标识,UTF-16用两个byte标识,java9会自动识别用哪个编码,当数据用到1byte,就会使用iSO或者latin1 ,当空间数据满足2byte的时候,自动使用utf-16,节省了很多空间 


同理,StringBuilder StringBuffer也更换了底层数据结构 

10、Java9新特性之---Stream API 新方法的添加 

在原有Stream API 新添加了4个方法,takeWhile dropWhile ofNullable iterate(新重载方法) 
首先解释 takeWhile 当达到一定条件就结束:输出结果为45 43,如图 


而 dropWhile 则和takeWhile 相反 
ofNullable, 在java8中 Stream中的元素不能完全为null,否则空指针异常,而在java9的升级中,允许创建null 
iterate 不加条件无线循环 



11、Java9新特性之---引进HttpClient 

以往我们都是通过maven添加httpclient ,java9直接引入即可 
Java9所有特性都是为了提高性能和内存。

 

分享到:
评论

相关推荐

    zip4j--Java操作zip压缩文件接口

    不过需要使用代理访问,如果读者嫌麻烦那就从这里下载吧,虽然收取3个CSDN积分,但您评论后一般就可以返还积分了,我也需要积分去下载别人的资源,请谅解! 资源包括:jar包、文档、源码和一些官方示例 该项目的...

    zip4j_1.3.2 - Java操作zip压缩文件接口最新版本

    不过需要使用代理访问,如果读者嫌麻烦那就从这里下载吧,虽然收取3个CSDN积分,但您评论后一般就可以返还积分了,我也需要积分去下载别人的资源,请谅解! 资源包括:jar包、文档、源码和一些官方示例 该项目的...

    生鲜配送平台源码java-python-:Python-

    生鲜配送平台源码java Table of Contents Python语言特性 1 Python的函数参数传递 看两个例子: a = ...所有的变量都可以理解是内存中一个对象的“引用”,或者,也可以看似c中void*的感觉。...如果还不明白的话,这里

    生鲜配送平台源码java-interview_python:面试_python

    生鲜配送平台源码java Table of Contents Python语言特性 1 Python的函数参数传递 看两个例子: a = ...所有的变量都可以理解是内存中一个对象的“引用”,或者,也可以看似c中void*的感觉。...如果还不明白的话,这里

    Java版水果管理系统源码-interview_python:关于Python的面试题

    Java版水果管理系统源码 Table of Contents Python语言特性 1 Python的函数参数传递 看两个例子: a = 1 def fun(a): a = 2 fun(a) print a # 1 a = [] def fun(a): a.append(1) fun(a) print a # [1] 所有的变量都...

    java百度贴吧源码-awesome-php-meetup:持更【大咖说PHP】大厂或大牛分享PHP高阶玩法。大厂有如腾讯、新浪、有赞、陌陌、

    如果你不能用一种语言里面的基本特性写出好的代码,那你换成另外一种语言也无济于事。你会写出一样差的代码。我经常看到有些人 Java 代码写得相当乱,相当糟糕,却骂 Java 不好,雄心勃勃要换用 Go 语言。这些人没有...

    c#学习笔记.txt

    看完了前面几段,我的朋友提出了不同的意见:C#不是Java的Clone,它只是长得有些像Java而已,其实面向对象、中间语言什么的也不是什么新玩意儿,非Sun独创,有文为证:华山论剑:C#对Java。另外他对我上一集中说...

    as3 接口类的用法和好处

    前面说了,AS3和Java不能继承多个类(前面没看的也没关系,现在你知道就可以了)。所以,你的继承可以有两种策略,不过,顶级的人类是无可争议的了。 package{ public class person{ } } 然后,第一种策略,就是先...

    Log4j日志管理系统简单使用说明

    这五个级别是有顺序的,DEBUG ,明白这一点很重要,这里Log4j有一个规则:假设Loggers级别为P,如果在Loggers中发生了一个级别Q比P高,则可以启动,否则屏蔽掉。    Java程序举例来说:    //建立Logger的一个...

    C#微软培训资料

    C#语言在.NET 框架中的作用及其特性 1.1 Microsoft.NET 一场新的革命 1.1.1 什么是.NET 2000 年 6 月 22 日 不论对 Microsoft 还是对整个 IT 业界都将成为值得纪念的一天 这一天 微软公司正式推出...

    CloudReader:云阅览:一种基于网易云音乐UI,使用WanAndroid,Gank.Io Api,MVVM-DataBinding架构开发的符合Google Material Design的Android客户端

    如果您有任何疑问,请写信给让你不明白的地方,也可以通过这里与我联系,我会帮助他们的时间。特点特性1,基本一致的Google Material Design设计风格。 2,玩安卓和干货集中营内容。 3,MvvM-DataBinding的项目应用...

Global site tag (gtag.js) - Google Analytics