java10新特性

简介: java10新特性

总结于尚硅谷学习视频

视频链接

正文

java10新特性一:局部变量的类型推断

使用场景

  1. 类实例化时
  2. 返回类型含复杂泛型结构
  3. 声明只使用一次的变量

不适用场景

  1. 初始化为null
  2. Lambda表达式
  3. 方法引用
  4. 为数组静态初始化
  5. 没有初始化的局部变量声明
  6. 方法的返回类型
  7. 方法的参数类型
  8. 构造器的参数类型
  9. 属性
  10. catch块

代码

Java10Test 类

package com.day0403_1;
import org.junit.jupiter.api.Test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
import java.util.function.Supplier;
public class Java10Test {
    /*
     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);
        }
    }
    @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};
    }
    @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;
    @Test
    public void test4(){
        try {
            var url1=new URL("http://www.atguigu.com");
//            var connection=new url1.openConnection();
            URLConnection connection = url1.openConnection();
            var reader=new BufferedReader(
                    new InputStreamReader(connection.getInputStream()));
        }catch (IOException e){
            e.printStackTrace();
        }
    }
    //java10的新特性二:集合中新增的方法的copyOf(),用于创建只读的集合
    @Test
    public void test5(){
        //示例一
        var list1= List.of("Java","Python","C");
        var copy1=List.copyOf(list1);
        System.out.println(list1==copy1);//true
        //示例二
        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()返回一个新集合,这个集合是只读的
    }
}

图片




使用场景





不适用场景




相关文章
|
26天前
|
存储 安全 Java
Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
【10月更文挑战第17天】Java Map新玩法:探索HashMap和TreeMap的高级特性,让你的代码更强大!
54 2
|
28天前
|
存储 Java
深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。
【10月更文挑战第16天】本文深入探讨了Java集合框架中的HashSet和TreeSet,解析了两者在元素存储上的无序与有序特性。HashSet基于哈希表实现,添加元素时根据哈希值分布,遍历时顺序不可预测;而TreeSet利用红黑树结构,按自然顺序或自定义顺序存储元素,确保遍历时有序输出。文章还提供了示例代码,帮助读者更好地理解这两种集合类型的使用场景和内部机制。
38 3
|
28天前
|
存储 Java 数据处理
Java Set接口凭借其独特的“不重复”特性,在集合框架中占据重要地位
【10月更文挑战第16天】Java Set接口凭借其独特的“不重复”特性,在集合框架中占据重要地位。本文通过快速去重和高效查找两个案例,展示了Set如何简化数据处理流程,提升代码效率。使用HashSet可轻松实现数据去重,而contains方法则提供了快速查找的功能,彰显了Set在处理大量数据时的优势。
32 2
|
30天前
|
存储 算法 Java
Java Set因其“无重复”特性在集合框架中独树一帜
【10月更文挑战第14天】Java Set因其“无重复”特性在集合框架中独树一帜。本文深入解析Set接口及其主要实现类(如HashSet、TreeSet)如何通过特定的数据结构(哈希表、红黑树)确保元素唯一性,并提供最佳实践建议,包括选择合适的Set实现类和正确实现自定义对象的`hashCode()`与`equals()`方法。
28 3
|
1月前
|
安全 Java API
Java 17新特性让你的代码起飞!
【10月更文挑战第4天】自Java 8发布以来,Java语言经历了多次重大更新,每一次都引入了令人兴奋的新特性,极大地提升了开发效率和代码质量。本文将带你从Java 8一路走到Java 17,探索那些能让你的代码起飞的关键特性。
76 1
|
1月前
|
编解码 Oracle Java
java9到java17的新特性学习--github新项目
本文宣布了一个名为"JavaLearnNote"的新GitHub项目,该项目旨在帮助Java开发者深入理解和掌握从Java 9到Java 17的每个版本的关键新特性,并通过实战演示、社区支持和持续更新来促进学习。
77 3
|
10天前
|
分布式计算 Java API
Java 8引入了流处理和函数式编程两大新特性
Java 8引入了流处理和函数式编程两大新特性。流处理提供了一种声明式的数据处理方式,使代码更简洁易读;函数式编程通过Lambda表达式和函数式接口,简化了代码书写,提高了灵活性。此外,Java 8还引入了Optional类、新的日期时间API等,进一步增强了编程能力。这些新特性使开发者能够编写更高效、更清晰的代码。
24 4
|
24天前
|
存储 Java API
优雅地使用Java Map,通过掌握其高级特性和技巧,让代码更简洁。
【10月更文挑战第19天】本文介绍了如何优雅地使用Java Map,通过掌握其高级特性和技巧,让代码更简洁。内容包括Map的初始化、使用Stream API处理Map、利用merge方法、使用ComputeIfAbsent和ComputeIfPresent,以及Map的默认方法。这些技巧不仅提高了代码的可读性和维护性,还提升了开发效率。
47 3
|
24天前
|
存储 安全 Java
Java Map新玩法:深入探讨HashMap和TreeMap的高级特性
【10月更文挑战第19天】Java Map新玩法:深入探讨HashMap和TreeMap的高级特性,包括初始容量与加载因子的优化、高效的遍历方法、线程安全性处理以及TreeMap的自然排序、自定义排序、范围查询等功能,助你提升代码性能与灵活性。
24 2
|
1月前
|
Java 开发者
在Java的集合世界里,Set以其独特的特性脱颖而出,它通过“哈希魔法”和“红黑树防御”两大绝技
【10月更文挑战第13天】在Java的集合世界里,Set以其独特的特性脱颖而出。它通过“哈希魔法”和“红黑树防御”两大绝技,有效抵御重复元素的侵扰,确保集合的纯洁性和有序性。无论是“人海战术”还是“偷梁换柱”,Set都能从容应对,成为开发者手中不可或缺的利器。
31 6