目录

一、Java11新特性

1、直接运行

2、String新增方法

3、Lamda表达式中局部类型推断

二、Java12新特性

1、升级的switch语句

三、Java13新特性

1、带有返回值的switch

2、文本块的变化


一、Java11新特性

1、直接运行

HelloWorld.java

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World!!");
    }
}

在以前的版本中,我们在命令提示下,需要先编译,生成class文件之后再运行

javac HelloWorld.java
java HelloWorld

在java11中,可以如下运行

java HelloWorld.java

2、String新增方法

public class StringTest {
    public static void main(String[] args) {
        char c = '\u2000';//Unicode空白字符
        String str = c + "abc" + c;
        System.out.println(str);
        System.out.println(str.trim());//去除空白字符不好用
        System.out.println(str.strip());//去除空白字符
        System.out.println(str.stripLeading());//去除前面的空白字符
        System.out.println(str.stripTrailing());//去除后面的空白字符

        String name=" ";
        System.out.println(name.isBlank());//是否为空

        String app="app";
        System.out.println(app.repeat(3));//重复输出几次字符串
    }
}

运行结果

 abc 
 abc 
abc
abc 
 abc
true
appappapp

3、Lamda表达式中局部类型推断

package com.lwz.java11;

@FunctionalInterface
public interface MyInterface {
    void m1(String a,int b);
}

测试

package com.lwz.java11;

public class MyTest {

    public static void main(String[] args) {
        MyInterface m1=(String a,int b)->{};
        //Java11
        MyInterface m2=(var a,var b)->{};
    }
}

二、Java12新特性

1、升级的switch语句

在jdk12之前的switch语句中,如果没有写break,则会出现case穿透现象。

例:按照月份输出季节

public class Switch01 {

    public static void main(String[] args) {
        int month=3;
        switch(month){
            case 3:
            case 4:
            case 5:
                System.out.println("spring");
                break;
            case 6:
            case 7:
            case 8:
                System.out.println("summer");
                break;
            case 9:
            case 10:
            case 11:
                System.out.println("autumn");
                break;
            case 12:
            case 1:
            case 2:
                System.out.println("winter");
                break;
            default:
                System.out.println("month is error");
                break;
        }
    }
}

java12 

public class Switch02 {
    public static void main(String[] args) {
        int month = 3;
        switch (month) {
            case 3, 4, 5 -> System.out.println("spring");
            case 6, 7, 8 -> System.out.println("summer");
            case 9, 10, 11 -> System.out.println("autumn");
            case 12, 1, 2 -> System.out.println("winter");
            default -> System.out.println("month is error");
        }
    }
}

        java12这个是预览功能,如果需要编译和运行的话需要使用下面命令,预览功能在2个版本之后会成为正式版,即如果你使用的是jdk14以上的版本,正式的编译和运行即可。否则需要使用预览功能来编译和运行。

编译:
    javac --enable-preview -source 12 Test.java
运行:
    java --enable-preview Test

三、Java13新特性

1、带有返回值的switch

此特性也是预览版,对于jdk15之后的版本可以直接编译运行,否则需要使用命令执行该预览功能

//带有返回值的switch
public class Switch03 {
    public static void main(String[] args) {
        int month = 3;
        String result = switch (month) {
            case 3, 4, 5 -> "spring";
            case 6, 7, 8 -> "summer";
            case 9, 10, 11 -> "autumn";
            case 12, 1, 2 -> "winter";
            default -> "month is error";
        };
        System.out.println(result);
    }
}

2、文本块的变化

public class Text {
    public static void main(String[] args) {
        String s1="床前明月光\n疑是地上霜\n举头望明月\n低头思故乡";
        System.out.println(s1);
        System.out.println("========");
        String s2= """
                床前明月光
                疑是地上霜
                举头望明月
                低头思故乡
                """;
        System.out.println(s2);//文本块写法,可读性更强,效果和加换行一样
    }
}

Java10新特性

一个程序员最重要的能力是:写出高质量的代码!!
有道无术,术尚可求也,有术无道,止于术。
无论你是年轻还是年长,所有程序员都需要记住:时刻努力学习新技术,否则就会被时代抛弃

10-30 06:58