首页 > 编程语言 >Java 9 新特性

Java 9 新特性

时间:2023-06-28 16:33:12浏览次数:27  
标签:10 Java List System 特性 改进 println

Java 9 引入了许多新特性和改进,下面是一些Java 9的新特性以及相关案例:

  1. 模块化系统(Java Platform Module System,JPMS):

      Java 9引入了一个全新的模块化系统,允许开发者将代码组织成模块,以提高代码的可维护性和可重用性。

      模块化系统可以帮助开发者解决依赖管理的问题,并提供更好的封装和隔离性。

    案例:

      创建一个模块module-info.java文件,定义模块的名称和依赖关系:

1 module com.example.myapp {
2     requires java.base;
3     requires java.sql;
4     requires com.example.mylibrary;
5 }

 

  1. JShell(交互式编程工具):

      Java 9引入了一个交互式编程工具JShell,允许开发者在命令行中直接输入和执行Java代码片段,无需编写完整的Java程序。

    案例:

      在命令行中使用JShell执行Java代码片段:

 1 $ jshell
 2 jshell> int x = 5;
 3 x ==> 5
 4 
 5 jshell> int y = 10;
 6 y ==> 10
 7 
 8 jshell> int sum = x + y;
 9 sum ==> 15
10 
11 jshell> System.out.println(sum);
12 15

 

  1. 改进的编译器:

      Java 9引入了一些编译器的改进,包括增强的类型推断、改进的注解处理器、增强的代码优化等。

    案例:

      使用Diamond操作符进行类型推断:

1 List<String> names = new ArrayList<>(); // 不再需要重复声明泛型类型

      使用私有接口方法:

 1 interface MyInterface {
 2     default void sayHello() {
 3         System.out.println("Hello");
 4     }
 5 
 6     private void sayGoodbye() {
 7         System.out.println("Goodbye");
 8     }
 9 }
10 
11 class MyClass implements MyInterface {
12     public void callPrivateMethod() {
13         sayGoodbye(); // 可以在实现类中调用私有接口方法
14     }
15 }

 

  1. 改进的集合工厂方法:

      Java 9为集合框架中的List、Set和Map等接口添加了一些新的工厂方法,使得创建和初始化集合对象更加便捷。

    案例:

      使用List.of()创建不可变的List集合:

1 List<String> names = List.of("Alice", "Bob", "Charlie");

      使用Set.of()创建不可变的Set集合:

1 Set<Integer> numbers = Set.of(1, 2, 3, 4, 5);

      使用Map.of()创建不可变的Map集合:

1 Map<String, Integer> scores = Map.of("Alice", 90, "Bob", 80, "Charlie", 70);

 

  1. 改进的Stream API:

      Java 9对Stream API进行了一些改进,包括新的Stream方法、改进的Optional类等。

    案例:

    使用takeWhile()方法获取满足条件的元素:    

1 List<Integer> numbers = List.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
2 List<Integer> result = numbers.stream()
3                               .takeWhile(n -> n < 5)
4                               .collect(Collectors.toList());
5 System.out.println(result); // 输出 [1, 2, 3, 4]

    使用dropWhile()方法去除满足条件的元素:

1 List<Integer> numbers = List.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
2 List<Integer> result = numbers.stream()
3                               .dropWhile(n -> n < 5)
4                               .collect(Collectors.toList());
5 System.out.println(result); // 输出 [5, 6, 7, 8, 9, 10]

 

这只是Java 9的一些新特性和相关案例的简要介绍,Java 9还有许多其他的改进和新增功能,如改进的并发工具、改进的安全性、改进的性能等。开发者可以深入学习和探索Java 9的新特性,以提高开发效率和代码质量

标签:10,Java,List,System,特性,改进,println
From: https://www.cnblogs.com/bay-lulu/p/17511723.html

相关文章

  • Java 8 新特性
    Java8是Java编程语言的一个重要版本,引入了许多更新和改进。Lambda表达式:引入了函数式编程的概念,可以简化代码,提高代码的可读性和可维护性。1//使用Lambda表达式实现一个简单的线程2Threadthread=newThread(()->System.out.println("Hello,Lambda!"......
  • JavaScript-常用字符串方法和属性
    JavaScript-常用字符串方法和属性charAt()//返回指定位置处的字符。charCodeAt()//返回指定位置处字符编码。codePointAt()//返回字符串中索引(位置)处的Unicode值。concat()//返回两个或多个连接的字符串。constructor返回字符串的构造函数。endsWith()//返回......
  • 在 Java、Python、JavaScript 和 Go 中拥抱异步
    ​本文讨论了四种语言的异步,强调了它在创建高效、响应迅速的应用程序中的作用。作为一名拥有多年主要使用Java工作经验的软件开发人员,当我最近为一个新项目切换到Python时,我发现自己很感兴趣。这种转变促使我探索各种语言的异步编程世界,包括Java、Python、JavaScript和Go......
  • Java阻塞队列原理
    阻塞队列,关键字是阻塞,先理解阻塞的含义,在阻塞队列中,线程阻塞有这样的两种情况:1.当队列中没有数据的情况下,消费者端的所有线程都会被自动阻塞(挂起),直到有数据放入队列。2.当队列中填满数据的情况下,生产者端的所有线程都会自动阻塞(挂起),直到队列中有空的位置,线程被自动唤醒。阻塞队列的......
  • (Python编程)Jython:Java的Python
    ProgrammingPython,3rdEdition翻译最新版本见wiki:http://wiki.woodpecker.org.cn/moin/PP3eD欢迎参与翻译与修订。18.4.Jython:PythonforJava18.4.Jython:Java的PythonJython(formerlyknownasJPython)isanentirelydistinctimpleme......
  • web和java哪个就业更好?
    首先,要区分两种开发语言的特点:Java是一种后台的语言,类似于php,主要做的就是把数据库搭建好,以及数据放置到网页当中,java是比较复杂的编程语言。Web前端开发相对应的职位可能就是一些web前端开发工程师,主要工作是把ui设计师设计好的psd利用html,制作成网页,web前端工程师布局网站的结......
  • java陷阱之不可忽视的慢sql
    说明记录一下,以前处理方式,都是线上cpu告警运维查看数据库mysql提供给研发改。记录一下操作方式,我觉得应该研发定期去上线拿慢sql日志,再做更改,因为很多慢sql在低峰期并不会给数据库性能带来瓶颈但是高峰期来就会遇到高CPU阻塞业务,那个时候再去优化就会很着急  阿里云慢......
  • JAVA 草稿
    1.项目启动报错:Failedtostartbean'documentationPluginsBootstrapper'度娘解释:swagger的匹配模式进行调整导致,导致默认的匹配默认在springboot中不会使用,导致报错。处理方式:(不建议降低springboot版本,调整太大了)spring:mvc:pathmatch:matching-strategy......
  • java 解析csv
    opencsvjava读取csv的类库主要有两种,opencsv和javacsv,研究发现,javacsv最后一次更新是2014-12-10,很久不维护了。opencsv是apache的项目,并且至今仍在维护,所以决定使用opencsv。csvcsv文件,全名commaseparatedvalues,默认以逗号分隔,是纯文本文件。虽然用excel打开后格式排版了,但是那......
  • java 序列化 serialVersionUID transient
    问题再现User类实现了序列化,但是没有声明版本号,这个对象放在memcache中,User新添加了1个字段后,把之前的对象从缓存中取出来时,出现了InvalidClassException,为什么会出现这个错误?序列化序列化就是将对象转为流,用于传输或保存。序列化的是“对象状态”,所以就不包括静态变量;反序列化是从......