java10新特性:局部变量类型推断、Java9&10&11新特性新增创建不可变Java9&10&11新特性的方法、
package top.qaqaq.java.P708;

import org.junit.jupiter.api.Test;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

/**
 * @author RichieZhang
 * @create 2022-11-05 下午 3:02
 */
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 url = new URL("http://www.qaqaq.top");
            var connection = url.openConnection();
            var reader = new BufferedReader(
                    new InputStreamReader(connection.getInputStream()));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    //java10的新特性二:集合中新增的copyOf(), 用于创建一个只读的集合
    @Test
    public void test5(){
        //示例1:
        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()返回一个新的集合,这个集合是只读的。
    }
}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇