`
frank1998819
  • 浏览: 758012 次
  • 性别: 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所有特性都是为了提高性能和内存。

 

分享到:
评论

相关推荐

    没整明白这些问题 别说你学过JAVA(pdf格式)

    "没整明白这些问题 别说你学过JAVA(pdf格式)"这句标题暗示了我们将面临一系列Java学习和面试中常见的挑战,而描述则告诉我们这里有100道面试常考题目,并且提供了一份简易教程作为辅助学习材料。标签进一步强调了...

    Visio里面嵌套javaApi

    在某些高级应用场景中,用户可能需要自定义功能或者扩展Visio的功能,这就涉及到了与其他编程语言的集成,比如Java API。本文将深入探讨如何在Visio中嵌套Java API,以及这一技术的应用和实现。 首先,我们要明白,...

    JAVA从零开始学

    这里会介绍类的定义、对象的创建,以及封装、继承和多态等面向对象的基本特性。通过实例,你会明白如何设计和使用自定义类来解决问题。 异常处理是编程中不可或缺的部分。在《异常.ppt》中,我们将学习如何识别和...

    loader in java houtian

    在深入理解这个概念之前,我们首先要明白Java的类加载机制。Java的类加载过程包括加载、验证、准备、解析和初始化五个阶段。 标题“loader in java houtian”可能是指特定于某个项目或环境的Java加载器实现,但没有...

    java上课资料,自己的代码

    首先,我们要明白Java的核心特性。Java以其“一次编写,到处运行”的跨平台能力著名,这得益于Java虚拟机(JVM)。Java语法简洁,易于学习,同时拥有强大的类库支持,使得开发人员能够高效地构建各种类型的应用程序...

    Java+FlashWavRecorder实现网页录音并上传

    这里可以使用Java的Base64解码库,如Apache Commons Codec,或者Java 8及以上版本内置的`java.util.Base64`类。 为了提高用户体验,还可以添加一些额外的特性,比如实时预览录音、显示录音时间、设置文件名等。在...

    java 面试题总会

    9. **Java 8新特性**: - 熟悉Lambda表达式和流API。 - 掌握方法引用和构造器引用。 - 理解Optional类的设计理念。 10. **框架与技术**: - 对Spring框架的理解,包括依赖注入、AOP、Spring Boot等。 - 熟悉...

    《Java编程宝典(十年典藏版)》源代码

    这本书全面覆盖了Java编程的各种基础知识和高级特性,旨在帮助读者从零开始掌握Java编程,进阶成为专业的Java开发者。源代码是书中理论知识的实践展示,是学习过程中的重要辅助资料。 在深入讲解Java编程宝典的知识...

    基于java的校园导游系统

    首先,我们要明白,Java(J2SE)是Java平台标准版的简称,它是Java编程语言的基础,提供了丰富的类库和API,支持桌面应用的开发。在这个校园导游系统中,Java的面向对象特性、异常处理机制和强大的网络支持都起到了...

    Java 读取Apk包名 版本 包含AXmlResourceParser.jar

    这里我们将深入探讨如何利用Java读取APK的包名和版本信息,以及涉及到的`AXmlResourceParser.jar`库的作用。 首先,我们要明白APK文件其实就是一个经过ZIP格式压缩的文件,因此我们可以通过Java的`java.util.zip`包...

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

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

    Java软件工程师简历模板(18种)

    9. **参考人**:如果有人愿意为你提供推荐,可以在这里列出他们的联系信息。如果没有,通常可以写“应要求提供”。 关于面试,Java软件工程师可能会遇到的难题包括: 1. **JVM内存模型**:理解堆、栈、方法区等...

    java实现memcache服务器的示例代码

    这里就不详细赘述,可以参考我的这系列文章,也建议去阅读 Java Network Programming 一书。 代码实现这里贴图功能出了点问题,可以去文末我的项目地址查看类图。这里采用了指令模式和工厂模式实现指令的创建和执行...

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

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

    java开发 QQ聊天 源码

    而这里的Java聊天源码可能包含了实现这些基本功能的核心模块。 首先,我们关注的是用户注册和登录系统。在Java开发中,这通常涉及到数据库操作,如使用JDBC(Java Database Connectivity)连接到MySQL或其他关系型...

    JAVA 反射PPT的示例代码

    Java反射是Java编程语言中的一个强大特性,它允许运行中的Java程序对自身进行检查并且可以直接操作程序的内部属性。在本示例中,我们将深入探讨Java反射的概念、用途以及如何通过PPT展示的代码示例来理解这个主题。 ...

    Java类加载流程(双亲委派)流程图.zip

    这里我们将深入探讨“双亲委派”模型,这是Java类加载的一个关键特性。 首先,我们要明白什么是双亲委派模型。在Java中,每个类都由一个特定的类加载器来负责加载。当一个类加载器收到加载类的请求时,它不会立即...

    java贪吃蛇游戏

    通过Java来实现这款游戏,我们可以了解到Java语言的面向对象特性、事件处理以及图形用户界面(GUI)的设计。 首先,我们要明白贪吃蛇游戏的基本规则:蛇通过移动来吞噬食物,每次吞噬后会增长一节,而蛇头碰到边界...

    Java智慧停车管理系统源码.zip

    在这个智慧停车管理系统中,Java发挥了其强大的面向对象特性,提供了良好的可维护性和可扩展性。 该系统的主目录名为“parking-master”,我们可以推测这是项目的根目录,包含了整个项目的所有源代码、配置文件、...

    Java基础之-反射(非常重要)

    在深入理解Java反射之前,我们首先要明白面向对象的基本概念,包括类、对象、方法以及继承、封装和多态等特性。 1. **类与对象**: - 类是Java中的蓝图,定义了具有相同属性和行为的对象模板。例如,`Person`类...

Global site tag (gtag.js) - Google Analytics