局部变量的类型推断 var关键字:这个新功能将为Java增加一些语法糖 - 简化它并改善开发者体验。新的语法将减少与编写Java相关的冗长度,同时保持对静态类型安全性的承诺。
/**
* 输出:
* [hello,world!, 1, 1.01]
*/
public static void varKeyWord() {
// 这里最好带上泛型,否则list就什么都可以装了
var list = new ArrayList<>();
list.add("hello,world!");
list.add(1);
list.add(1.01);
System.out.println(list);
}
String toString(Charset): 重载 toString(),通过使用指定的字符集解码字节,将缓冲区的内容转换为字符串。
这3个接口都增加了一个新的静态方法,copyOf(Collection)。这些函数按照其迭代顺序返回一个不可修改的列表、映射或包含给定集合的元素的集合。
/**
* 按照其迭代顺序返回一个不可修改的列表、映射或包含给定集合的元素的集合。
*/
public static void collectionNewAPI() {
var list = new ArrayList<String>();
list.add("hello");
list.add("world");
// copyOf返回的集合为不可变,不能增删元素
var newCopyList = List.copyOf(list);
// 这里add方法会抛出异常:java.lang.UnsupportedOperationException
// newCopyList.add("zdk");
System.out.println(newCopyList);
}
java.util.Properties
增加了一个新的构造函数,它接受一个 int 参数。这将创建一个没有默认值的空属性列表,并且指定初始大小以容纳指定的元素数量,而无需动态调整大小。还有一个新的重载的 replace 方法,接受三个 Object 参数并返回一个布尔值。只有在当前映射到指定值时,才会替换指定键的条目。
/**
* 新增int入参的构造方法和重载的replace方法
*/
public static void propertiesNewAPI() {
// 新增int参数的构造函数,初始化大小,默认为8
var properties = new Properties(8);
properties.setProperty("host", "localhost");
// 只有当前值为localhost时才会替换,替换成功返回true
properties.replace("host", "localhost", "baidu.com");
System.out.println(properties);
}
/**
* 输出:
* [hello, world]
*/
public static void collectorsNewAPI() {
var list = new ArrayList<String>();
list.add("hello");
list.add("world");
var unmodifiableList = list.stream().collect(Collectors.toUnmodifiableList());
// 不可修改的list,这里add/remove操作不会抛出异常,但add/remove不会生效
unmodifiableList.add("hello2");
System.out.println(unmodifiableList);
}
原文:https://www.cnblogs.com/z-dk/p/15059193.html