当前位置: 首页 > news >正文

java10学习笔记

        Java 10 于 2018 年 3 月发布,是 Java 平台按照新的六个月发布周期发布的第一个版本。虽然相比 Java 8 和 Java 9 的大型更新,Java 10 的变化较小,但仍然引入了一些重要的特性,特别是本地变量类型推断(var) 。

局部变量类型推断

        Java 10 最引人注目的特性是引入了 var 关键字,允许编译器根据变量初始化表达式自动推断局部变量的类型。这个特性使 Java 代码更加简洁,减少了冗余的类型声明。

        值得注意的是,虽然 var 看起来像动态类型,但 Java 依然是强类型语言。var 只是在编译时由编译器负责类型推断,一旦推断完成,变量的类型就固定了,在运行时不会改变。

        var app="q123";//1.没有初始化器的变量声明
//        var num ;
//        var s = null;
//        //2.lambda表示式中,左边的函数式接口不能声明为varSupplier<Double> sup = () -> Math.random();
//        var sup = () -> Math.random();
//        //3.方法引用中,左边的函数式接口不能声明为varConsumer<String> con = System.out::println;
//        var con = System.out::println;
//        //4.数组的静态初始化中,注意如下的情况也不可以int[] arr = {1, 2, 3, 4};
//        var arr = {1,2,3,4};//        捕获表达式(catch)
//        try{
//
//        }catch(var e){
//            e.printStackTrace();
//        }//方法的返回类型
//    public var method1(){
//            return 0;
//    }//方法的参数类型
//    public void method2(var num){
//
//    }

copyof()

自 Java 9 开始, Jdk 里面为集合(List / Set / Map) 都添加了 of (jdk9新增)和copyOf (jdk10新增)方法, 它们两个都用来创建不可变的集合, 来看下它们的使用和区别。

static <E> List<E> copyOf(Collection<? extends E> coll) {if (coll instanceof ImmutableCollections.AbstractImmutableList) {return (List<E>)coll;} else {return (List<E>)List.of(coll.toArray());}
}
static <E> Set<E> copyOf(Collection<? extends E> coll) {if (coll instanceof ImmutableCollections.AbstractImmutableSet) {return (Set<E>)coll;} else {return (Set<E>)Set.of(new HashSet<>(coll).toArray());}
}
static <K, V> Map<K, V> copyOf(Map<? extends K, ? extends V> map) {if (map instanceof ImmutableCollections.AbstractImmutableMap) {return (Map<K,V>)map;} else {return (Map<K,V>)Map.ofEntries(map.entrySet().toArray(new Entry[0]));}

返回一个只读集合,如果被复制的是只读集合,返回它本身,如果不是创建一个只读集合并返回

        var map = Map.of("Java", "Python", "C", "C");var copyMap = Map.copyOf(map);System.out.println(map == copyMap); // truevar list = new ArrayList<String>();list.add("牛逼");var copyList = List.copyOf(list);System.out.println(copyList == list); // false

垃圾回收器

G1并行Full GC

        G1垃圾收集器在jdk9中是默认的。G1垃圾收集器避免了任何完全的垃圾收集,但是当用于收集的并发线程不能足够快地恢复内存时,用户的体验就会受到影响。

此更改通过使完全GC并行来改善G1最坏情况下的延迟。G1收集器的mark-sweep compact算法作为此更改的一部分被并行化,当用于收集的并发线程不能足够快地恢复内存时,它将被触发。

垃圾收集器接口

        这个JEP是未来的变化。它通过引入一个通用的垃圾收集器接口来改进不同垃圾收集器的代码隔离。

        此更改为内部GC代码提供了更好的模块化。它将有助于将来添加新的GC而不改变现有的代码基,也有助于删除或管理以前的GC。

http://www.dtcms.com/a/323009.html

相关文章:

  • EPI2ME分析软件测试
  • Java 8 特性
  • PG靶机 - Shiftdel
  • 计算机网络:CIDR地址块划分子网可以使用VLSM吗?
  • 使用 Vuepress + GitHub Pages 搭建项目文档(2)- 使用 GitHub Actions 工作流自动部署
  • [激光原理与应用-206]:光学器件 - SESAM - 基本结构与工作原理
  • “高大上“的SpringCloud?(微服务体系入门)
  • 关于灰度图像相似度的损失函数(笔记)
  • 【Datawhale AI夏令营】基于多模态RAG的企业财报问答系统
  • MySQL弹幕内容字段设计总结
  • Linux Makefile解析
  • 元宇宙技术如何改变社交方式?
  • MyBatis联合查询 - 注解篇
  • QT系统相关
  • gpt-oss 全量技术解读
  • Alibaba Cloud Linux 3 安装 git
  • 【Spring Boot启动流程底层源码详解】
  • kubectl get node k8s-node01 -o yaml | grep taint -B 5 -A 5
  • 如何理解SA_RESTART”被信号中断的系统调用自动重启“?
  • 腾讯COS云存储入门
  • 笔试——Day33
  • 基于遗传优化的稀疏线阵最优排布算法matlab仿真
  • Java面向对象编程(OOP)全面解析:从基础到实践
  • 关于城市农村创业的一点构想
  • 自动生成视频的AI大模型高效创作指南
  • mac安装node.js
  • 【GPT入门】第41课 Model Scope在线平台部署Llama3
  • Serper注册无反应
  • Numpy基础(通用函数)
  • 游游的数组染色