范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

细数Java814的那些经典特性,语言的车轮正在滚滚向前

  Java的新特性
  Lambda表达式
  Lambda表达式(也称为闭包)它允许我们将函数当成参数传递给某个方法,或者把代码本身当作数据处理,在没有Lambda表达式之前,Java只能使用名内部类代替Lambda表达式。
  Lambda的设计耗费了很多时间和很大的社区力量,最终找到一种折中的实现方案,可以实现简洁而紧凑的语言结构。最简单的Lambda表达式可由逗号分隔的参数列表、->符号和语句块组成。 Arrays.asList( "a", "b", "d" ).forEach( e -> System.out.println( e ) );
  上述代码中参数e的类型是由编译器推理得出的,也可以显式指定该参数的类型。 Arrays.asList( "a", "b", "d" ).forEach( ( String e ) -> System.out.println( e ) );函数式接口
  Lambda 的设计者为了让现有的功能与 Lambda 表达式很好兼容,设计出函数式接口。 函数式接口是指只有一个函数的接口,可以隐式转换为 lambada 表达式。 Java 8 提供了注解 @FunctionalInterface,显示声明一个函数式接口。 java.lang.Runnable 和 java.util.concurrent.Callable 是函数式接口的例子~ @FunctionalInterface public interface Runnable {     /**      * When an object implementing interface Runnable is used      * to create a thread, starting the thread causes the object"s      * run method to be called in that separately executing      * thread.      *
  * The general contract of the method run is that it may      * take any action whatsoever.      *      * @see     java.lang.Thread#run()      */     public abstract void run(); }方法引用
  方法引用提供了非常有用的语法,可以直接引用已有 Java 类或对象(实例)的方法或构造器。它与 Lambda 表达式配合使用,可以减少冗余代码,使代码更加简洁。     public static void main(String[] args) {         Consumer consumer = System.out::println;         consumer.accept("打印日志");     }
  默认方法
  默认方法就是一个在接口里面有了一个实现的方法。它允许将新方法添加到接口,但不强制实现了该接口的类必须实现新的方法。 public interface DemoService {     /**      * 默认实现的方法      **/     default void method1() {         System.out.println("xxx");     }          void method2(); }
  Stream API
  Stream API,支持对元素流进行函数式操作,它集成在 Collections API 中,可以对集合进行批量操作。常用 API: filter 筛选 map 流映射 reduce 将流中的元素组合起来 collect 返回集合 sorted 排序 flatMap 流转换 limit 返回指定流个数 distinct 去除重复元素
  Optional
  Java 8 引入 Optional 类,用来解决 NullPointerException。Optional 代替 if...else 解决空指针问题,使代码更加简洁。 Optional optional = Optional.ofNullable(userRepository.getOne(1L)); optional.ifPresent(u -> System.out.println(user));
  Date Time API
  JDK 8 之前的日期 API 处理存在非线程安全、时区处理麻烦等问题。Java 8 在 java.time 包下提供了新的日期 API,简化了日期的处理~     public static void main(String[] args) {         LocalDate today = LocalDate.now();         int year = today.getYear();         System.out.println("今年是" + year);         //是否闰年         System.out.println("今年是不是闰年:" + today.isLeapYear());           LocalDateTime todayTime = LocalDateTime.now();         System.out.println("当前时间" + todayTime);         //时区指定         System.out.println("美国时间:" + ZonedDateTime.of(todayTime, ZoneId.of("America/Los_Angeles")));           LocalDate specailDate = LocalDate.of(2020, 6, 20);         LocalDate expectDate = specailDate.plus(100, ChronoUnit.DAYS);         System.out.println("比较特别的一天" + specailDate);         System.out.println("特殊日期的 100 天" + expectDate);     }重复注解
  重复注解,即一个注解可以在一个类、属性或者方法上同时使用多次,用 @Repeatable 定义重复注解
  public @interface ScheduleTimes {     ScheduleTime[] value(); }   @Repeatable(ScheduleTimes.class) public @interface ScheduleTime {     String value(); }   public class ScheduleTimeTask {     @ScheduleTime("10")     @ScheduleTime("12")     public void doSomething() {       } }Base64
  Java 8 把 Base64 编码的支持加入到官方库中。     public static void main(String[] args) {         String str = "新消息";         String encoded = Base64.getEncoder().encodeToString(str.getBytes( StandardCharsets.UTF_8));         System.out.println("Base64编码字符串:" + encoded);         String decoded = new String(Base64.getDecoder().decode(encoded), StandardCharsets.UTF_8);         System.out.println("Base64解码字符串:" + decoded);     }
  JVM新特性
  使用元空间 Metaspace 代替持久代(PermGen space),JVM 参数使用-XX:MetaSpaceSize 和-XX:MaxMetaspaceSize 设置大小。
  Java9新特性
  Java模块化
  什么是模块化?
  一个大型系统,比如一个商城网站,它会包含很多模块的,如:订单模块,用户信息模块,商品信息模块,广告位模块等等。各个模块之间会相互调用。如果每个模块单独运行都会带动其他所有模块,性能非常低效。但是,如果某一模块运行时,只会启动它所依赖的模块,性能会大大提升。这就是 JDK 9 模块化的思想。
  什么是 JDK 9 模块化?
  Java 平台模块系统,即 Project Jigsaw,把模块化开发实践引入到了 Java 平台中。在引入了模块系统之后,JDK 被重新组织成 94 个模块。Java 应用可以通过新增的 jlink 工具,创建出只包含所依赖的 JDK 模块的自定义运行时镜像。这样可以极大地减少 Java 运行时环境的大小。
  Java 9 模块的重要特征: 在其工件(artifact)的根目录中包含了一个描述模块的 module-info.class 文 件。 工件的格式可以是传统的 JAR 文件或是 Java 9 新增的 JMOD 文件。 这个文件由根目录中的源代码文件 module-info.java 编译而来。 该模块声明文件可以描述模块的不同特征。 不可变集合工厂方法
  为了创建不可变集合,JDK9 之前是这样的:     public static void main(String[] args) {         List stringList = new ArrayList<>();         stringList.add("1:");         stringList.add("2");         List  unmodifiableList = Collections.unmodifiableList(stringList);     }
  JDK 9 提供了 List.of()、Set.of()、Map.of()和 Map.ofEntries()等工厂方法来创建不可变集合: List unmodifiableList = List.of("1","2");接口支持私有方法
  JDK 8 支持在接口实现默认方法和静态方法,但是不能在接口中创建私有方法,为了避免了代码冗余和提高阅读性,JDK 9 在接口中支持私有(private)方法。 砖石操作符钻石操作符是在 java 7 中引入的,可以让代码更易读,但它不能用于匿名的内部类。 在 java 9 中, 它可以与匿名的内部类一起使用,从而提高代码的可读性。         //JDK 5,6         Map map56 = new HashMap();         //JDk 7,8         Map map78 = new HashMap<>();         //JDK 9 结合匿名内部类的实现          Map map9 = new HashMap<>(){};Optional类改进
  java 9 中,java.util.Optional 添加了很多新的有用方法,如: stream() ifPresentOrElse() or()
  多版本兼容jar包很多公司使用的 JDK 都是老版本的,JDK6、JDk5 ,甚至 JDk4 的,不是他们不想升级 JDk 版本,而是担心兼容性问题。JDK 9 的一个新特性,多版本兼容 Jar 包解决了这个问题。
  JDK 9 的这个功能很强大,它可以让你的版本升级到 JDK 9,但是还是老版本的运行流程,即在老的运行流程继承新的功能~ JShell工具
  jShell 工具相当于 cmd 工具,然后呢,你可以像在 cmd 工具操作一样,直接在上面运行 Java 方法,Java 语句等。 Try-with-resources改进
  JDK 9 对 try-with-resources 异常处理机制进行了升级。 Stream API 的改进
  JDK 9 为 Stream API 引入以下这些方法,丰富了流处理操作: takeWhile() dropWhile() iterate ofNullable
  其他HTTP 2 客户端 (支持 WebSocket 和 HTTP2 流以及服务器推送) 进程 API(控制和管理操作系统进程) String 底层存储结构更改(char[]替换为 byte[]) 标识符添加限制( String _ ="hello"不能用) 响应式流 API (支持 Java 9 中的响应式编程)
  Java10新特性
  局部变量类型推断
  JDK 10 增加了局部变量类型推断(Local-Variable Type Inference)功能,让 Java 可以像 Js 里的 var 一样可以自动推断数据类型。Java 中的 var 是一个保留类型名称,而不是关键字。 不可变集合的改进
  JDK 10 中,List,Set,Map 提供了一个新的静态方法 copyOf(Collection<? extends E> coll),它返回 Collection 集合一个不可修改的副本。 并行全垃圾回收器 G1
  JDK 9 引入 G1 作为默认垃圾收集器,执行 GC 时采用的是基于单线程标记扫描压缩算法(mark-sweep-compact)。为了最大限度地减少 Full GC 造成的应用停顿的影响,Java 10 中将为 G1 引入多线程并行 GC,同时会使用与年轻代回收和混合回收相同的并行工作线程数量,从而减少了 Full GC 的发生,以带来更好的性能提升、更大的吞吐量。 线程本地握手
  Java 10 中线程管控引入 JVM 安全点的概念,将允许在不运行全局 JVM 安全点的情况下实现线程回调,由线程本身或者 JVM 线程来执行,同时保持线程处于阻塞状态,这将会很方便使得停止单个线程或不停止线程成为可能。 Optional 新增 orElseThrow()方法
  Optional、OptionalDouble 等类新增一个方法 orElseThrow(),在没有值时抛出异常 其他新特性基于 Java 的 实验性 JIT 编译器 类数据共享 Unicode 语言标签扩展 根证书 基于时间(Time-Based)的版本控制模型
  Java11新特性
  字符串操作
  String 类是 Java 最常用的类,JDK 11 增加了一系列好用的字符串处理方法
  isBlank() 判空。 strip() 去除首尾空格 stripLeading() 去除字符串首部空格 stripTrailing() 去除字符串尾部空格 lines() 分割获取字符串流。 repeat() 复制字符串 用于 Lambda 参数的局部变量语法
  局部变量类型推断是 Java 10 引入的新特性,但是不能在 Lambda 表达式中使用。Java 11 再次创新,它允许开发者在 Lambda 表达式中使用 var 进行参数声明。 标准化 HTTP Client
  Java 9 引入 Http Client API,Java 10 对它更新,Java 11 对它进行标准化。这几个版本后,Http Client 几乎被完全重写,支持 HTTP/1.1 和 HTTP/2 ,也支持 websockets。 单个命令编译运行源代码
  Java 11 增强了 Java 启动器,使之能够运行单一文件的 Java 源代码。
  Java 11 之前,要运行一个 Java 源代码必须先编译,再运行 // 编译 javac Demo.java // 运行 java DemoJava 11 之后,只要一个 java 命令就搞定 java Demo.javaZGC:可伸缩低延迟垃圾收集器
  ZGC ,即 Z Garbage Collector(垃圾收集器或垃圾回收器)。它是一个可伸缩的、低延迟的垃圾收集器。ZGC 主要为了满足如下目标进行设计: GC 停顿时间不超过 10ms 既能处理几百 MB 的小堆,也能处理几个 TB 的大堆 应用吞吐能力不会下降超过 15%(与 G1 回收算法相比) 方便在此基础上引入新的 GC 特性和利用 colord 针以及 Load barriers 优化奠定基础 当前只支持 Linux/x64 位平台 其他一些特性添加 Epsilon 垃圾收集器。 支持 TLS 1.3 协议 飞行记录器分析工具 动态类文件常量 低开销的 Heap Profiling
  Java12新特性
  Switch 表达式扩展
  传统的 switch 语句,容易漏写 break 而出错,同时写法并不简洁优雅。JDk 12 之后,Switch 表达式得到增强,能接受语句和表达式。 紧凑的数据格式
  JDK 12 新增了 NumberFormat 对复杂数字的格式化 NumberFormat numberFormat = NumberFormat.getCompactNumberInstance(Locale.CHINA, NumberFormat.Style.SHORT); System.out.println(numberFormat.format(100000)); //output 10 万
  字符串支持 transform、indent 操作transform 字符串转换,可以配合函数式接口 Function 一起使用 indent 缩进,每行开头增加空格 space 和移除空格 Files.mismatch(Path, Path)
  Java 12 新增了 mismatch 方法,此方法返回第一个不匹配的位置,如果没有不匹配,则返回 -1L。 Teeing Collector
  Teeing Collector 是 Streams API 中引入的新的收集器实用程序,它的作用是 merge 两个 collector 的结果. 其他特性支持 unicode 11(684 个新字符、11 个新 blocks、7 个新脚本) JVM 常量 API (主要在新的 java.lang.invoke.constant 包中定义了一系列基于值的符号引用类型,能够描述每种可加载常量。) Shenandoah GC(低暂停时间垃圾收集器) G1 收集器提升 (可中止的混合收集集合、及时返回未使用的已分配内存) 默认 CDS 档案 JMH 基准测试
  Java13新特性
  Switch 表达式扩展(引入 yield 关键字)
  Java 13 之后,value break 语句不再被编译,而是用 yield 来进行值返回。 文本块升级
  Java 13 之前,字符串不能够多行使用,需要通过换行转义或者换行连接符等等,反正就是好麻烦、好难维护。 String html = " " +"     " +  "        

Hello " +" " +" ";   Java 13 之后,清爽多了 String html = """

Hello""";SocketAPI 重构传统的 Java Socket API(java.net.ServerSocket 和 java.net.Socket)依赖于 SocketImpl 的内部实现 在 Java 13 之前,通过使用 PlainSocketImpl 作为 SocketImpl 的具体实现。 Java 13 中的新底层实现,引入 NioSocketImpl 的实现用以替换 SocketImpl 的 PlainSocketImpl 实现,此实现与 NIO(新 I/O)实现共享相同的内部基础结构,并且与现有的缓冲区高速缓存机制集成在一起。 FileSystems.newFileSystem 新方法   FileSystems 类中添加了以下三种新方法,以便更容易地使用将文件内容视为文件系统的文件系统提供程序:   1、newFileSystem(Path) 2、newFileSystem(Path, Map) 3、newFileSystem(Path, Map) 增强 ZGC 释放未使用内存ZGC 是 Java 11 中引入的最为瞩目的垃圾回收特性,是一种可伸缩、低延迟的垃圾收集器。但是实际使用中,它不能够主动将未使用的内存释放给操作系统。 Java 13 中对 ZGC 的改进,包括释放未使用内存给操作系统、支持最大堆大小为 16TB、JVM 参数-XX:SoftMaxHeapSize 来软限制堆大小 其他特性动态 CDS 存档, 扩展了 Java 10 中引入的类数据共享功能, 使用 CDS 存档变得更容易。 文本块的字符串类新方法,如 formatted(Object…args),stripIndent()等。   Java14新特性   instanceof 模式匹配   instanceof 传统使用方式: if (person instanceof Singer) { Singer singer = (Singer) person; singer.sing(); } else if (person instanceof Writer) { Writer writer = (Writer) person; writer.write(); }   Java 14 对 instanceof 进行模式匹配改进之后 if (person instanceof Singer singer) { singer.sing(); } else if (person instanceof Writer writer) { writer.write(); }   Record 类型(预览功能)   Java 14 将 Record 类型作为预览特性而引入,有点类似于 Lombok 的 @Data 注解。 Switch 表达式-标准化   switch 表达式在之前的 Java 12 和 Java 13 中都是处于预览阶段,终于在 Java 14 标准化,成为稳定版本。   Java 12 为 switch 表达式引入 Lambda 语法 Java 13 使用 yield 代替 break 关键字来返回表达式的返回值。 改进 NullPointerExceptions 提示信息   非常有帮助的空指针异常。通过精确描述哪个变量为空,提高JVM生成的NEP(NullPointerExceptions)的可用性。Java14之前,NEP报错信息不会指出为Null的实例具体是那一个。例如:a.b.c.d 出现NEP时,开发者无法确定究竟是a、b、c、d中的那个变量报了空指针。而在这个新特点的加入之后,NEP错误栈则会明确表明,触发NEP的对象是哪个。   我是Seven,一个不懈努力的程序猿,希望本文能对你有所裨益


中国女排世界冠军晒全家福,孩子100天了!退役后的生活十分美满据消息报道,前中国女排队长也是中国女排世界冠军的曾春蕾在社交媒体上发布了与家人的合照,并配文称自己的孩子100天了。从配文内容中可以看出她对孩子无比浓烈的爱,还有晒出的照片中抱着孩恭喜!国乒女单15岁新星横空出世,黑马连赢两大名将获得全国亚军2021年10月27日,乒乓球全国青年锦标赛结束,来自广东的15岁新星纵歌曼表现突出,打进女单决赛获得亚军,受到很多球迷的关注,以前纵歌曼的成绩并不突出,这次也是完成蜕变,连续战胜把隔离餐当狗屎那就别吃,你是来中国打工,不是来中国当救世主真的看不惯一些人,一边享受着这个时代和这个社会带给自己的福利和红利,一边在辱骂着周围的一切,把自己摆在高高在上的位置。当然这部分人有咱们外国人,也有来咱们中国的外国人,比如最近这个吸取教训,拒绝重蹈覆辙!辽宁外援候选名单曝光,一人绝配赵继伟CBA常规赛第5轮继续进行,在已经结束的一场比赛中,广厦12175大胜宁波。此役,广厦打出历史级别的进攻效率,全队一共出手76次,命中49球,其中三分线外22中10,命中率高达45NBA今日参赛球队最佳球员评选,穆雷211215三双落选北京时间10月27日,NBA常规赛继续,东西部10支球队比赛,5场常规赛先后不同时间段内进行。尼克斯队对阵费城数字队,库里神奇不在,恩比德面对尼克斯铁桶防守表现低迷,哈里斯2399老话说人偷三懒,越懒越有福,是哪三懒?有没有道理人们都知道少壮不努力,老大徒伤悲,勤能富贵懒败家,少不努力老抓瞎。人生在世,就应该努力上进,才能创造出更好的生活,好吃懒做是不能发家致富的。但是,俗话说人偷三懒,越懒越有福,这是让广东队外援确定!恭喜杜锋,恭喜阿联!冲击4连冠,更有底气了根据国内媒体人报道,威姆斯已经和广东男篮达成了续约协议。这意味着他会继续代表广东队参加本赛季的CBA比赛。第一阶段大概率是赶不上了,因为还得涉及到隔离等因素在里面。但是,威姆斯第二威少失误四双遭驱逐,浓眉30分湖人领先26分遭雷霆逆转湖人背靠背客场对阵雷霆,威少面对老东家砍下失误四双20分14篮板13助攻10失误,他在最后1。5秒吃到第二个技犯被驱逐。湖人在第二节领先26分的情况下,第四节落后8分,最终1151特雷99险胜鹈鹕老鹰客场10299击败鹈鹕。开场格拉汉姆英格拉姆连中三分,后者再完成21,赫伯特琼斯远投,鹈鹕124开局。特雷杨连得7分,许尔特快攻上篮,特雷杨反击找到卡佩拉扣篮,老鹰追到1518巴特勒171474断热火篮板抢爆胜篮网,杜兰特2511NBA常规赛,热火客场10693胜篮网。开局洛瑞巴特勒阿德巴约纷纷得分,热火1510领先。杜兰特三罚哈里斯三分,篮网一波80反超。希罗上场后连得7分,热火回应一波120领先9分。节乔治20投12分快船疯狂打铁惨败于骑士,塞克斯顿26分NBA常规赛,骑士客场9279战胜快船。莫布里补扣拿下比赛首分,祖巴茨快攻为快船率先得分。但之后双方进攻停滞,骑士依靠加兰德的连续两记三分领先7分,肯纳德回应三分后双方是疯狂打铁。
2021年钢材价格是上涨的,2022年钢材价格的趋势是涨价还是跌价对于一个长期从事回收废旧金属的人员来说,亲身经历了2021年全年钢材的价格变化,主要是以涨价为主,下跌的时段很少,全年可以总结为涨多跌少的运行规律。市场上钢材价格维持在每吨5000原一加创始人打造手机,骁龙芯片安卓系统,价格可能不便宜原一加品牌联合创始人裴宇在2020年10月份离职,随后创建了属于自己的Nothing公司,并于去年推出了耳机和智能电子产品。最新爆料显示,Nothing旗下首款手机即将发布,拥有高脑供血不足时,身体会有什么信号?常吃3种蔬菜,或能帮你缓解导语脑供血不足指的是因为脑动脉循环发生障碍,使脑部供血不足,从而带来的一系列身体不适症状。这也是现如今非常常见的一种脑血管疾病,一旦出现了这样的问题,会容易导致大脑动脉供血量严重缺不当批评是能量损耗不当批评是能量损耗消极批评和积极批评之比较1两种批评的家长心态不同消极批评生气易怒烦躁无奈不安焦虑怀疑不信任。害处A容易伤孩子自尊心,践踏孩子的人格尊严。B孩子自信心受挫,变得胆怯百岁老人的非常规养生方式,你get到了吗?我的爷爷,今年101周岁,是我们村子里目前健在最年长的老人,没有之一。奶奶20多年前走了,当时家里人都担心,夫妻双方如果有一方先走,另一半会不会也活不长久,结果却恰恰相反,20几年患甲状腺结节后不要过于紧张,饮食遵循三多两少原则一甲状腺结节多吃什么?1芋头众所周知,芋头是我们日常生活中比较常见的一种食物,其中含有丰富的营养物质,尤其是膳食纤维含量丰富,摄入量充足的话便能加快新陈代谢,进而促进肠胃蠕动,对于总有这4种表现,可能是体内湿气太重了!是该祛湿了有的人身体湿气过重没有尽早调节,加上脾脏功能降低,身体运化水湿能力下降,会有对应的症状。因此,要先了解湿气重具体有哪些特征,如果自己也有,可通过多种好习惯的养成来改善,其中服用中药北京最贵的卤煮,却很正宗地道在爱吃卤煮的老北京人心中,北新桥卤煮老店在心中绝对是光辉的存在。以前的卤煮是给穷人吃,现在的卤煮是老北京的饮食文化各种卤煮5835卤煮分大肠和小肠,还有大小肠大肠更鲜肥,也更入味,春天,别忘吃河中第一鲜,5元一斤,人人吃得起,煮汤特鲜美春天万物复苏,一切都显得生机勃勃,郊外的野菜树上的瓜果,各种各样的时令蔬果开始大量上市,让我们的餐桌变得丰富起来。除了蔬菜水果,春天也是吃鱼的好时机。说到鱼,很多人都认为海鱼有营养50岁女人选对发型很重要,推荐三种不同风格的发型,总有适合你的嗨,各位小仙女们,大家好呀!都说人靠衣装,想要提升个人的颜值,甚至是改变脸型,那么换对一款发型就是最重要的了。不管是什么年龄阶段的女性,在穿衣搭配上,发型上都应该挑选合适自己的。今春天很流行衬衫的11叠穿法,时髦又高级,还很有层次感一到春天,就习惯性去入手一件适合自己的衬衫,虽然衣橱里面都塞满了衬衫,但是每年都总觉得缺少一件,它的百搭时髦简约舒适,真的会让人忍不住买,那么衬衫应该如何搭配得时髦呢?今年穿衬衫就