我的编程空间,编程开发者的网络收藏夹
学习永远不晚

JDK9新特性详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

JDK9新特性详解

1、Java9新特性之目录结构

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

JDK9新特性详解 

JDK9新特性详解

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

    JDK9新特性详解

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

2、Java9新特性之JShell工具

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

        JDK9新特性详解

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

        JDK9新特性详解

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

3、Java9新特性之模块化

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

        JDK9新特性详解

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

        JDK9新特性详解

        在这个两个模块java9Demo和java9Test中,java9demo编写一个实体类Person,在java9Test调用这样一个过程

        这个是java9Demo 将 java9Test 模块需要的文件导出 exports  把它所在的包导出 

module java9Demo{    exports com.mdxl.layer_cj.entity;}

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

module java9Test{    requires java9Demo;}

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

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

       怎么理解呢?

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

5、Java9新特性之接口Interface的升级
public interface FilterProcess<T> {    //java 7 及以前 特性  全局常量 和抽象方法    public static final String a ="22";    boolean process(T t);    //java 8 特性 静态方法和默认方法    default void love(){        System.out.println("java8 特性默认方法");    }    static void haha(){        System.out.println("java8 特性静态方法");    }    //java 8 特性 支持私有方法    private void java9(){}}
6、Java9新特性之钻石操作符的升级
//java6及以前Map<String,String> map7 = new HashMap<String,String>();//java7和8 <>没有了数据类型Map<String,String> map8 = new HashMap<>();//java9 添加了匿名内部类的功能 后面添加了大括号{}  可以做一些细节的操作Map<String,String> map9 = new HashMap<>(){};
7、Java9新特性之异常处理try升级

      首先看下jdk6,7,8,9 的try catch的比较

      Java6处理方式:

//java7及以前写法  每一个流打开的时候都要关闭@Testpublic void test7(){    InputStreamReader reader = null;    try{        reader = new InputStreamReader(System.in);        reader.read();    }catch (IOException e){        e.printStackTrace();    }finally {        if (reader != null){            try {                reader.close();            } catch (IOException e) {                e.printStackTrace();            }        }    }}

      JDK7,8 共同的处理方式:

//java7和8及 每一个流打开的时候都要关闭,但是在try的括号中来进行关闭@Testpublic void test7(){    try(InputStreamReader reader =new InputStreamReader(System.in)){        reader.read();    }catch (IOException e){        e.printStackTrace();    }}

      java9的处理方式:

//java9及 每一个流打开的时候都要关闭,但是在try的括号中来进行关闭,在//java8的基础上进一步升级 直接在try括号中直接写入 变量就好,如果有多个流,就用分号隔开//try(reader;writer){}@Testpublic void test7(){    InputStreamReader reader =new InputStreamReader(System.in);    try(reader){        reader.read();    }catch (IOException e){        e.printStackTrace();    }}
8、Java9新特性之特殊标识符增加限制

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

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

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

    JDK9新特性详解

    JDK9新特性详解

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

    JDK9新特性详解

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

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

      在原有Stream API 新添加了4个方法,takeWhile dropWhile ofNullable iterate(新重载方法)

      首先解释 takeWhile 当达到一定条件就结束:输出结果为45 43,如图

    JDK9新特性详解

      而 dropWhile 则和takeWhile 相反

      ofNullable, 在java8中 Stream中的元素不能完全为null,否则空指针异常,而在java9的升级中,允许创建null

      iterate 不加条件无线循环

    JDK9新特性详解

11、Java9新特性之引进HttpClient

      以往我们都是通过maven添加httpclient ,java9直接引入即可

      Java9所有特性都是为了提高性能和内存。。。。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

JDK9新特性详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

JDK9新特性详解

1、Java9新特性之目录结构 包含jdk8及以前的jdk版本,所有目录结构以及目录含义如图: jdk9之后,目录结构发生变化如图: 这个新特性只要了解下就可以了,这个目录结构是方便为了接下来新特性做
2023-06-02

关于jdk9、jdk10、jdk11、jdk12、jdk13新特性说明

JDK 9特性说明:1. 模块化系统(Jigsaw):引入了一种新的模块化系统,允许将Java SE平台和应用程序分割成一组互相依赖的模块。2. JShell:引入了一个交互式的Java编程工具,可以在命令行中立即编写和执行Java代码片段
2023-08-08

JDK 新特性篇:JDK 10 新特性详解

JDK 10 是 Java 开发工具包的一个版本,其中包含了一些新的特性和改进。下面是 JDK 10 的一些新特性的详细解释:1. 局部变量类型推断:JDK 10 引入了局部变量类型推断的功能,使得在声明变量时可以使用 var 关键字代替具
2023-09-14

JDK 新特性篇:JDK 9 新特性详解

JDK 9 是 Java 平台的一次重大更新,引入了许多新的特性和改进。以下是 JDK 9 的一些主要新特性的详细解释。模块化系统(Module System):JDK 9 引入了一个全新的模块化系统,它允许将代码和资源以模块的形式组织和封
2023-09-13

Java8新特性详解

陈老老老板 说明:新的专栏,本专栏专门讲Java8新特性,把平时遇到的问题与Java8的写法进行总结,需要注意的地方都标红了,一起加油。 本文是介绍Java8新特性与常用方法(此篇只做大体介绍了解,之后会把重
2023-08-17

JDK10新特性详解

1、局部变量var 将前端思想var关键字引入java后段,自动检测所属于类型,一种情况除外,不能为null,因为不能判断具体类型,会报异常。@Testpublic void test1(){ var number = 10
2023-06-02

JDK11新特性详解

1、增强局部变量类型推断varConsumer consumer = t -> System.out.println(t.toUpperCase());Consumer consumer = (var t)
2023-06-02

Tapestry5新特性详解

Tapestry5是一个轻量级的、开源的Java Web框架,它提供了一种简化Web开发的方式。下面是Tapestry5的一些新特性的详解:1. 组件化:Tapestry5采用组件化的开发模式,将页面划分为多个可复用的组件,每个组件都有自己
2023-09-22

JDK12的新特性详解

本篇内容介绍了“JDK12的新特性详解”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、JDK12之Shenandoah低暂停时间垃圾收集器
2023-06-02

JDK8的新特性详解

本篇内容介绍了“JDK8的新特性详解”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、Lambda演变过程@Data@ToString@No
2023-06-02

Android 7.0新特性详解

谷歌正式在I/O大会现场详细介绍了有关Android 7.0的大量信息。目前,我们已经知道,新一代Android操作系统将支持无缝升级,能够通过Vulkan API来在中低硬件配置设备上实现流 畅.游戏体验以及更多的Emoji表情。不过,A
2022-06-06

Hadoop3.x新特性详解

Hadoop 3.x版本带来了许多新的特性和改进,使其更加强大和高效。以下是Hadoop 3.x的一些主要新特性:HDFS Erasure Coding:Hadoop 3.x引入了HDFS Erasure Coding,这是一种新的数据保护
Hadoop3.x新特性详解
2024-02-29

JDK的版本迭代特性(JDK9 - JDK20)

文章目录 1. 发布特点2. 名词解释Oracle JDK和Open JDKJEPLTS 3. 各版本支持时间路线图4. 各版本介绍jdk 9jdk 10jdk 11jdk 12jdk 13jdk 14jdk 15jdk 16
2023-08-17

Java8新特性Stream流详解

陈老老老板 说明:新的专栏,本专栏专门讲Java8新特性,把平时遇到的问题与Java8的写法进行总结,需要注意的地方都标红了,一起加油。 本文是介绍Java8新特性Stream流常用方法超详细教学
2023-08-17

详解Java中switch的新特性

这篇文章主要介绍了Java中switch的新特性,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-05-20

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录