当前位置: 首页 > 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.xdnf.cn/news/1265473.html

相关文章:

  • IntelliJ IDEA 新手全方位使用指南
  • 服务机器人选择屏幕的逻辑
  • 7、docker |其余命令
  • spring.config.import 不存在
  • Pytest中实现自动生成测试用例脚本代码
  • kettle插件-kettle MinIO插件,轻松解决文件上传到MinIO服务器
  • C++隐式转换的魔法与陷阱:explicit关键字的救赎
  • qt文件操作与qss基础
  • 推荐系统学习笔记(十一)预估分数融合
  • java web项目入门了解
  • Go语言接口实战指南
  • 聊聊经常用的微服务
  • Baumer高防护相机如何通过YoloV8深度学习模型实现火星陨石坑的检测识别(C#代码UI界面版)
  • 集成电路学习:什么是RQT图形用户界面工具
  • 智慧园区误报率↓76%:陌讯多模态融合算法实战解析
  • 智能情趣设备、爆 bug:可被远程操控。。。
  • 计算机网络:如何将/22的CIDR地址块划分为4个子网
  • 前端视角下关于 WebSocket 的简单理解
  • rosrun 和 roslaunch 区别
  • [激光原理与应用-205]:光学器件 - LD与DFB的比较
  • JavaWeb03——javascript基础语法
  • 微信小程序功能 表单密码强度验证
  • 从浅拷贝到深拷贝:C++赋值运算符重载的核心技术
  • v-model双向绑定指令
  • Selenium + Python + Pytest + Yaml + POM
  • Linux网络--2、Socket编程
  • 自由学习记录(79)
  • Pytest项目_day08(setup、teardown前置后置操作)
  • NY128NY133美光固态闪存NY139NY143
  • No time to train! Training-Free Reference-Based Instance Segmentation之论文阅读