java10 新特性 详解

  引言:
  
  点击--》java9 新特性 详解
  
  点击--》java8 新特性 详解
  
  正题:
  
  1、局部变量var
  
  将前端思想var关键字引入java后段,自动检测所属于类型,一种情况除外,不能为null,因为不能判断具体类型,会报异常。
  
  @Test
  
  public void test1(){
  
  var number = 10;
  
  var str = "i like java";
  
  var list = new ArrayList<>();
  
  var map = new HashMap<>();
  
  var set = new HashSet<>();
  
  list.add("test var is list");
  
  map.put("1","test var is map");
  
  set.add("test var is set");
  
  System.out.println(number);
  
  System.out.println(str);
  
  System.out.println(list.toString());
  
  System.out.println(map.toString());
  
  System.out.println(set.toString());
  
  }
  
  结果:
  
  10
  
  i like java
  
  [test var is list]
  
  {1=test var is map}
  
  [test var is set]
  
  var可以用于任何类型,基本类型,集合,以及实体类等等都可以,省略了我们在前面写入具体的类型,我们尽管var,让它自己去判断就好了。
  
  2、copyOf方法
  
  在java.util.List、java.util.Set、java.util.Map新增加了一个静态方法copyOf,这些方法按照其迭代顺序返回一个不可修改的列表、集合或映射包含了给定的元素的集合。但是如果将返回后的集合继续修改,那么会保异常
  
  @Test
  
  public void test2(){
  
  var list = new ArrayList<>();
  
  list.add("first");
  
  list.add("second");
  
  list.add("third");
  
  var result = List.copyOf(list);
  
  System.out.println(result.toString());
  
  }
  
  结果:
  
  [first, second, third]
  
  3、ByteArrayOutputStream:toString(Charset)
  
  Java.io.ByteArrayOutputStream,重载toString()方法,通过使用指定的字符集编码字节,将缓冲区的内容转换为字符串,以前是默认没有参数,现在加了一个编码的字符方法。
  
  public static void main(String[] args) throws Exception {
  
  String str = "我喜欢java";
  
  ByteArrayInputStream bis = new ByteArrayInputStream(str.getBytes("utf-8"));
  
  ByteArrayOutputStream bos = new ByteArrayOutputStream();
  
  int c = 0;
  
  while((c = bis.read()) != -1) {
  
  bos.write(c);
  
  }
  
  //bos.toString() 默认的使用的UTF-8编码
  
  System.out.println(bos.toString());
  
  }
  
  这个是我们正常的格式,但是当我们修改代码,str.getBytes("gbk")的时候,创建的txt为乱码,那么我们使用toString()的新增方法,替换gbk
  
  4、PrintStream、PrintWriter
  
  Java.io.PrintStream,Java.io.PrintWriter,这两个类都有三个新的构造方法,他们需要而外的参数charset
  
  @Test
  
  public void test3() throws FileNotFoundException, UnsupportedEncodingException {
  
  String str = "我也特别喜欢java";
  
  var pri = new PrintWriter(www.fengshen157.com/ "/Users/tentsuuhou/Desktop/11.txt");
  
  pri.println(str);
  
  pri.flush();
  
  pri.close();
  
  }
  
  我这个路径是mac电脑的,如果你是windows,可以写“d:/aa.txt“ 不过都需要提前创建好txt文件夹
  
  结果为:
  
  但是我们这个txt默认的都是utf-8格式的,如果突然改成gbk的话,格式会不匹配出现乱码,毕竟txt文件格式要和输出的格式一致才可以,这是我们可以使用一下
  
  var pri = new PrintWriter("/Users/tentsuuhou/Desktop/11.txt","gbk");
  
  我们直接在后面添加一个格式参数就可以直接解决啦
  
  5、Reader:transferTo方法
  
  Java.io.Reader:transferTo从这个Reader中读取所有字符串,并按照所读取的顺序将字符串写入给指定的Writer
  
  @Test
  
  public void test4() throws IOException {
  
  var reader = new BufferedReader(new www.michenggw.com InputStreamReader(new FileInputStream("/Users/tentsuuhou/Desktop/11.txt"), "utf-8"));
  
  var p = new PrintWriter(new File("/Users/tentsuuhou/Desktop/12.txt"));
  
  reader.transferTo(p);
  
  p.flush();
  
  p.close();
  
  reader.close();
  
  }
  
  结果:12.txt文件将11.txt文件拷贝过来了,注意编码格式也要一致才可以。用这个方法方便了许多。
  
  6、Formatter、Scanner
  
  java.util.Formatter、java.util.Scanner新增三个构造方法,除了其他参数之外,都需要一个charset参数
  
  将11.txt内容替换成这样
  
  @Test
  
  public void test5() throws FileNotFoundException {
  
  var scan = new Scanner(new FileInputStream(new File(www.dasheng178.com"/Users/tentsuuhou/Desktop/11.txt")),"utf-8");
  
  scan.useDelimiter(" |,");
  
  while(scan.hasNext()) {
  
  System.out.println(scan.next());
  
  }
  
  }
  
  scan.useDelimiter(" |,"); 这是空格或者‘,’ 都要分割,如下结果为:
  
  7、垃圾收集器的优化
  
  7.1 JDK9垃圾收集器
  
  新生代:ParNew收集器;老年代:Parallel Old收集器 Stop The World
  
  7.2 JDK10垃圾收集器
  
  JDK10:G1(Garbage-Frist)全收集器

原文地址:https://www.cnblogs.com/qwangxiao/p/10364640.html

时间: 2024-10-06 20:38:51

java10 新特性 详解的相关文章

Servlet 3.0 新特性详解

转自:https://www.ibm.com/developerworks/cn/java/j-lo-servlet30/ Servlet 3.0 新特性详解 张 建平2010 年 4 月 23 日发布 WeiboGoogle+用电子邮件发送本页面 6 Servlet 3.0 新特性概述 Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布.该版本在前一版本(Servlet 2.5)的基础上提供了若干新特性用于简化 Web 应用的开发和部署.其

Android群英传笔记——第十二章:Android5.X 新特性详解,Material Design UI的新体验

Android群英传笔记--第十二章:Android5.X 新特性详解,Material Design UI的新体验 第十一章为什么不写,因为我很早之前就已经写过了,有需要的可以去看 Android高效率编码-第三方SDK详解系列(二)--Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能 这一章很多,但是很有趣,也是这书的最后一章知识点了,我现在还在考虑要不要写这个拼图和2048的案例,在此之前,我们先来玩玩Android5.X的新特性吧!

[Android 新特性] 安卓4.4新特性详解

在本月初,谷歌的5太子google  nexus5正式发布了,还给大家带来了全新的安卓android4.4的操作系统,并且官网给大家带来了新的说法,就是安卓4.4会比之前的系统更加省电,这个到底是为什么呢?网侠小编就来说说安卓4.4的为何省电的工作机制. 首先,我们要搞清楚一个问题,那就是什么是Dalvik? 在整个Android 4.4的更新特性中,最引人瞩目的应该就是虚拟机由Dalvik转成ART,也就是“中间件”的变更(Midware).先来看看什么是Dalvik. 如图,Dalvik虚拟

编译安装httpd-2.4.9及新特性详解

前言 前面我们讲解了httpd在CentOS6上(httpd-2.2)的相关功能配置,而CentOS7上采用了httpd-2.4的版本,那么httpd-2.4增加了哪些特性呢?接下来让我们在CentOS6.6上手动编译安装一下httpd-2.4.9,看一下和httpd-2.2有什么不同,顺便补充说一下httpd的其它功能. 环境及新特性介绍 环境介绍 系统环境:CentOS6.6 所需软件包:apr-1.5.0.tar.bz2.apr-util-1.5.3.tar.bz2.httpd-2.4.9

JAVA8 十大新特性详解

本教程将Java8的新特新逐一列出,并将使用简单的代码示例来指导你如何使用默认接口方法,lambda表达式,方法引用以及多重Annotation,之后你将会学到最新的API上的改进,比如流,函数式接口,Map以及全新的日期API “Java is still not dead—and people are starting to figure that out.” 本教程将用带注释的简单代码来描述新特性,你将看不到大片吓人的文字. 一.接口的默认方法 Java 8允许我们给接口添加一个非抽象的方

Oracle Database 12.2新特性详解

在2015年旧金山的Oracle OpenWorld大会上,Oracle发布了Database 12.2的Beta版本,虽然Beta版本只对部分用户开放,但是大会上已经公布了12.2的很多重要的新特性,云和恩墨是Oracle的Beta用户,已经开始测试这一产品.在刚刚结束的"Oracle技术嘉年华"大会上,更详细的主题分享披露了更多内容.在这篇文章中,我将和大家一一来细数Oracle Database 12.2的新特性. Oracle Sharding的实现 简单来说,Oracle的S

[转]Servlet 3.0 新特性详解

原文地址:http://blog.csdn.net/xiazdong/article/details/7208316 Servlet 3.0 新特性概览 1.Servlet.Filter.Listener无需在web.xml中进行配置,可以通过Annotation进行配置: 2.模块化编程,即将各个Servlet模块化,将配置文件也分开配置. 3.Servlet异步处理,应对复杂业务处理: 4.异步Listener,对于异步处理的创建.完成等进行监听: 5. 文件上传API简化: tomcat

centos7/rhel7新特性详解(1)

RHEL7/CENTOS7新特性: 1.身份管理 kerberos的跨平台信任机制:kerberos将完全兼容微软活动目录,实现完全使用活动目录进行认证. REALMD:该功能简化了RHEL 加入微软活动目录的配置,支持自动发现域信息. RHEL 7增加了两个关键性的新特征改善了RHEL对AD的处理方式.现在,RHEL7和AD之间建立了跨域信任(Cross-realm trusts),因此AD用户可以在Linux端无需登录就能访问资源.RHEL 7增加的另外一个AD相关的功能是realmd,实现

Servlet 3.0 新特性详解 (转载)

原文地址:https://www.ibm.com/developerworks/cn/java/j-lo-servlet30/ Servlet 3.0 新特性概述 Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布.该版本在前一版本(Servlet 2.5)的基础上提供了若干新特性用于简化 Web 应用的开发和部署.其中有几项特性的引入让开发者感到非常兴奋,同时也获得了 Java 社区的一片赞誉之声: 异步处理支持:有了该特性,Servlet