#Java版本特性

Java 13在2019年9月发布,这个版本引入的正式可用特性几乎没有,是我认为最无聊的版本之一。所以我们跳过Java 13直接来看Java 14吧。 Switch表达式我觉得switch表达式在日常中开发被使用的太少了,不是因为这个关键字和if比起来太“难”,而是因为它很冗长,而且这种视觉上的噪声容易掩盖那些难以调试的错误,特别是那些break语句,就像下面这样: switch (day) { case MONDAY: case FRIDAY: case SUNDAY: System.out.println(6); break; case TUESDAY: System.out.println(7); break; case THURSDAY: case SATURDAY: ...

上一篇说完了Java11的新特性,本篇接着说一下Java12.Java 12 对开发者有用的特性并不是特别多,不过实用性还是有的。 字符串增强Java 12 进一步对字符串操作进行增强,增加了两个方法。 字符串缩进String indent(int n) 会根据参数n对字符串进行缩进。具体的规则是 当n>0时,会在字符串的每一行开头插入n个空格,字符串整体右移。 当n<0时,会在字符串的每一行开头删除n个空格,如果实际的空格数小于n,删除该行所有空格,但是并不会换行。 来实验一下: String text = " Hello \n Java12";System.out.println("缩进前");System.out.println(text);System.out.println("右缩进俩字符");String indent2 = text.indent(2);...

Java 11是自Java 8以来的又一个LTS版本,是目前全球使用最多的LTS版本之一。今天我们接着在Java 9 到 Java 17系列文章中来认识针对普通开发者的Java 11。 字符串API增强在Java 11中,针对String的操作进一步得到加强。避免我们在很常见的场景中引入额外的、复杂的API。 isBlank()用来判断字符串是不是空字符""或者trim()之后(" ")为空字符: String blankStr = " ";// trueboolean trueVal = blankStr.isBlank(); lines()将一个字符串按照行终止符(换行符\n或者回车符\r)进行分割,并将分割为Stream流: String newStr = "Hello Java 11 \n felord.cn \r 2021-09...

在上一篇我们对Java 9的新特性进行了一些回顾,今天接着来看看Java 10带来了什么特性。之所以需要把Java 8 到Java 17的特性归纳一遍,因为Java社区对Java 17的重视程度前所未有。话不多说,让我们走进Java 10。 Java 10从Java 10 开始,Java的迭代周期缩短为半年,半年发布一个版本。 局部变量类型推断在Java 6时初始化一个Map需要我们这样来声明: Map<String, String> map = new HashMap<String,String>(); 事实上泛型方法的参数可以通过上下文推导出来,所以在Java 7 中简化为: Map<String, String> map = new HashMap<>(); 到了Java 10 进一步升华了类型推断,我们看一个例子: var ma...

Java 17 是Java 最重要的一个LTS版本之一,但是直接从Java 8 过渡到Java 17跨度太大了,势必有些困难。所以胖哥抽时间梳理了一下从Java 9到Java 17的一些常用API的变动。今天先来看看Java 9 都有什么东西。 Java 9Java 9 最大的变化就是引入了一个JShell和模块化,日常并没有用太多,所以今天不花时间在这些功能上面。 新的创建集合的方法用过谷歌Guava类库的知道,Guava提供了创建集合的静态工厂方法,而且能够推断泛型,举个例子: List<Person> list = Lists.newArrayList();Map<KeyType, Person> map = Maps.newLinkedHashMap(); 而原生态需要各种new来定义。Java 9改善了这一现状,现在你可以: // [1, 2, 3,...