java 10新特性
局部变量类型推断
1、新特性之一 类型推断(java10)
@Test
public void test1() {
//1.声明变量时,根据所附的值,推断变量的类型
var num = 10;
var list = new ArrayList<Integer>();
list.add(123);
//2.遍历操作
for (var i : list) {
System.out.println(i);
System.out.println(i.getClass());
}
//3.普通的遍历操作
for (var i = 0; i < 100; i++) {
System.out.println(i);
}
}
2、新特性之二 类型推断(java10)
一些都是错误的写法、都是以右边推断的、让左边迷糊了
@Test
public void test2() {
//1.局部变量不赋值,就不能实现类型推断
//var num ;
//2.lambda表示式中,左边的函数式接口不能声明为var
// Supplier<Double> sup = () -> Math.random();
//var sup = () -> Math.random();
//3.方法引用中,左边的函数式接口不能声明为var
// Consumer<String> con = System.out::println;
// var con = System.out::println;
//4.数组的静态初始化中,注意如下的情况也不可以
int[] arr = {1, 2, 3, 4};
// var arr = {1,2,3,4};
}
3、新特性之三 类型推断(java10)
方法返回值、入参、全局变量、异常块、构造器都不可以使用var、否则报错
@Test
public void test3() {
// 情况1:没有初始化的局部变量声明
// var s = null;
// 情况6:catch块
// try{
//
// }catch(var e){
// e.printStackTrace();
// }
}
//情况2:方法的返回类型
// public var method1(){
//
return 0;
// }
// 情况3:方法的参数类型
// public void method2(var num){
//
// }
//情况4:构造器的参数类型
// public Java10Test(var i){
//
// }
//情况5:属性
// var num;
4、新特性之四 工作原理(java10特性)
5、新特性之五 属性(java10特性)
@Test
public void test4() {
try {
var url = new URL("http://www.atguigu.com");
var connection = url.openConnection();
var reader = new BufferedReader(
new InputStreamReader(connection.getInputStream()));
} catch (IOException e) {
e.printStackTrace();
}
}
6、新特性之六 copyOf(),用于创建一个只读的集合(java10特性)
java10的新特性二:集合中新增的copyOf(),用于创建一个只读的集合
1、示例1和2代码基本一致,为什么一个为true,一个为false?
2、结论:copyOf(Xxx coll):如果参数coll本身就是一个只读集合,则copyOf()返回值即为当前的coll
3、如果参数coll不是一个只读集合,则copyOf()返回一个新的集合,这个集合是只读的。
@Test
public void test5(){
//示例1:都是只读属性copy到只读属性、对比、必然是true
var list1 = List.of("Java", "Python", "C");
var copy1 = List.copyOf(list1);
System.out.println(list1 == copy1); // true
//示例2:
var list2 = new ArrayList<String>();
list2.add("aaa");
var copy2 = List.copyOf(list2);
System.out.println(list2 == copy2); // false
//示例1和2代码基本一致,为什么一个为true,一个为false?
//结论:copyOf(Xxx coll):如果参数coll本身就是一个只读集合,则copyOf()返回值即为当前的coll
//如果参数coll不是一个只读集合,则copyOf()返回一个新的集合,这个集合是只读的。
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/15528.html