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.pswp.cn/web/92550.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/92550.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flutter Listview的基本使用

Listview() 前端页面常见的一个以列表方式显示内容的组件。可垂直或水平滚动的列表。属性说明scrollDirection设置滚动的方向&#xff0c;取值包括horizontal、verticalreverse设置是否翻转&#xff0c;默认值falseitemExtent设置滚动方向子元素的长度&#xff0c;垂直方向为高…

强化学习笔记:从Q学习到GRPO

推荐学习huggingface的强化学习课程&#xff0c;全面了解强化学习的发展史。 以下是个人笔记&#xff0c;内容不一定完整&#xff0c;有些是个人理解。 基于值函数(value function)的强化学习 基于值函数(value function)的强化学习&#xff1a;学习的是一个值函数&#xff0…

MySQL索引底层原理与性能优化实践

#技术栈深潜计划一、前言 在日常开发中&#xff0c;MySQL数据库以其高效、易用、可扩展等特性成为最主流的关系型数据库之一。而索引作为数据库查询优化的核心工具&#xff0c;被誉为“数据库的加速器”。但你真的了解MySQL索引的底层原理吗&#xff1f;为什么InnoDB默认采用B树…

Ext系列文件系统

1.硬件常见的硬件有磁盘、服务器、机柜、机房机械磁盘但是计算机中唯一的一个机械设备磁盘外设的特点就是外设慢容量大&#xff0c;价格便宜1.1.磁盘的物理结构磁盘的物理图&#xff1a;磁盘的存储图扇区:是磁盘存储数据的基本单位&#xff0c;512字节&#xff0c;块设备磁盘的…

前缀函数——KMP的本质

前缀函数我个人觉得 oiwiki 上的学习顺序是很合理的&#xff0c;学 KMP 之前先了解前缀函数是非常便于理解的。前后缀定义 前缀 prefixprefixprefix 指的是从字符串 SSS 的首位到某个位置 iii 的一个子串&#xff0c;这样的子串写作 prefix(S,i)prefix(S,i)prefix(S,i)。 后缀 …

解决chrome下载crx文件被自动删除,加载未打包的扩展程序时提示“无法安装扩展程序,因为它使用了不受支持的清单版本解决方案”

解决chrome下载crx文件被自动删除 【chrome设置-隐私与安全-安全浏览】&#xff0c;选择 不保护 【chrome设置-下载内容】&#xff0c;勾选 下载前询问每个文件的保存位置 下载crx文件时&#xff0c;选择保存文件夹&#xff0c;将 .crx后缀 改为 .zip后缀&#xff0c;再确定。 …

嵌入式学习day23-shell命令

linux软件编程学习大纲&#xff1a;1.IO操作文件2.多任务编程3.网络编程4.数据库编程5.硬件设备管理学习目标&#xff1a;1.学习接口调用&#xff08;第一层&#xff09;2.软件操作流程和思想&#xff08;第二层&#xff09;3.软件设计思想和流程架构&#xff08;第三层&#x…

GPT-5 系列深度详解:第1章-引言(目录)

1 引言2 模型数据与训练3 观察到的安全挑战与评估 3.1 从强制拒绝到安全完成 3.2 禁⽌内容 3.3 拍⻢屁 3.4 越狱 3.5 指令层级 3.6 幻觉 3.7 欺骗 3.7.1 欺骗思维链监控 3.8 图像输入 3.9 健康 3.10 多语言性能 3.1.1公平性与偏见&#xff1a; BBQ评估4 红队测试与外部评估…

NineData 新增支持 AWS ElastiCache 复制链路

2025 年&#xff0c;绝大多数企业已完成业务上云&#xff0c;以获取更高的弹性、可扩展性和成本效益。AWS ElastiCache 作为 AWS 提供的全托管式内存数据库服务&#xff0c;已成为许多企业在云上构建高并发、低延迟应用的理想选择。NineData 数据复制现已全面支持从自建 Redis …

人工智能-python-特征选择-皮尔逊相关系数

以下是关于特征选择中常用方法的表格总结&#xff0c;并且详细阐述了皮尔逊相关系数的原理、计算方法、步骤以及示例。 常用特征选择方法总结方法原理优点缺点使用场景过滤法&#xff08;Filter Method&#xff09;基于特征的统计信息&#xff08;如相关性、方差等&#xff09;…

LabVIEW多循环架构

​LabVIEW的多循环架构是一种常见的架构&#xff0c;本文Temperature Monitoring.vi 采用 LabVIEW 典型的多循环并行架构&#xff0c;通过功能模块化设计实现温度监测全流程&#xff0c;各循环独立运行又协同工作&#xff0c;构成完整的监测系统。1. 事件处理循环&#xff08;E…

深入理解Maven BOM

一、什么是Maven BOM&#xff1f; 1.1 BOM的基本概念 Maven BOM&#xff08;Bill of Materials&#xff0c;材料清单&#xff09;是一种特殊的POM文件&#xff0c;它主要用于集中管理多个相关依赖的版本。BOM本身不包含任何实际代码&#xff0c;而是作为一个 版本管理的"参…

Mysql分页:高效处理海量数据的核心技术

Mysql分页&#xff1a;高效处理海量数据的核心技术01 引言 在Web应用、移动应用或数据分析场景中&#xff0c;数据库常常需要处理百万甚至千万级的数据记录。一次性加载所有数据不仅效率低下&#xff0c;还会消耗大量网络带宽和内存资源。数据库分页技术正是解决这一挑战的关键…

通过 Docker 运行 Prometheus 入门

Promethues 组件 prometheus serverexporteralertmanager 环境准备 Docker 拉取镜像备用 # https://hub.docker.com/r/prom/prometheus docker pull m.daocloud.io/docker.io/prom/prometheus:main# https://hub.docker.com/r/prom/node-exporter docker pull m.daocloud.io/do…

Java 8特性(一)

目录 一、Lambda表达式 1、语法格式&#xff1a; &#xff08;1&#xff09;接口名 对象名(参数类型1参数名1,....参数类型n 参数名n)->{方法体;} &#xff08;2&#xff09;参数类型h 参数名n:接口中抽象方法的参数项 &#xff08;3&#xff09;->:表示连接操作 &a…

【代码随想录|232.用栈实现队列、225.用队列实现栈、20.有效的括号、1047.删除字符串中的所有相邻重复项】

232.用栈实现队列 timutimtit232. 用栈实现队列 - 力扣&#xff08;LeetCode&#xff09; class MyQueue { public:stack<int> Sin;stack<int> Sout;MyQueue() {}void push(int x) {Sin.push(x);}int pop() {if (Sout.empty()) { // 出栈为空就把入栈的数导出来w…

码上爬第三题【协程+浏览器调试检测】

前言&#xff1a;图灵第三题就是对用户浏览器调试检测&#xff0c;检测鼠标右击打开控制台&#xff0c;检测键盘按键ctrlshifti&#xff0c;从浏览器设置打开开发者工具也不行&#xff0c;应该是有浏览器宽高检测的&#xff0c;所以我们保证浏览器页面宽高不变即可。你如果想右…

windows、linux应急响应入侵排查

windows入侵排查 1.1检查账号 1.查看服务器是否有弱口令&#xff0c;远程管理端口是否对公网开放 2.查看服务器是否存在可疑账号、新增账号 检查方法&#xff1a;打开 cmd 窗口&#xff0c;输入 lusrmgr.msc 命令&#xff0c;查看是否有新增/可疑的账号&#xff0c;如有管…

11. 为什么要用static关键字

11. 为什么要用static关键字 static&#xff1a;通常来说&#xff1a;在new一个对象的时候&#xff0c;数据存储空间才会被分配&#xff0c;方法才能被外界使用。但是有时只想单独分配一个存储空间&#xff0c;不考虑需要创建对象或不创建对象&#xff0c;在没有对象的情况下也…

[Oracle] MAX()和MIN()函数

MAX() 和 MIN() 是 Oracle 常用的聚合函数&#xff0c;用于从一组值中找出最大值和最小值1.MAX()函数MAX()函数返回指定列或表达式中的最大值语法格式MAX(expression)参数说明expression&#xff1a;可以是列名、计算列或表达式示例-- 返回employees表中salary列的最大值 SELEC…