这多是【Java10】新特性中,最流行和最有用的了!!!喜大普奔

在今年的9月份就要发布Java历史以来第三个长期支持版本Java 17了,不知道你做何感想……java

我知道你们目前对待JDK的态度是这样的:python

新版任你发,我就用Java8!markdown

可是我今天要和你们分享的是Java 10中新添加的一个特性,并且这个特性我以为是你们很是有必要了解和学习的一个特性,以致于你们能够把Java 8升级到Java 11,固然,是在咱们日常的学习当中!ide

var初体验

是什么呢?咱们先来看段代码:学习

public class HelloWorld {
    public static void main(String[] args) {
        String s = "庆哥java";
        System.out.println(s);
    }
}

这段代码太简单了,其实重点是如下这个:编码

public class HelloWorld {
    public static void main(String[] args) {
        var s = "庆哥java";
        System.out.println(s);
    }
}

怎么样,是否是不同了呢?你可能会说,这不行吧,的确,我目前的人编译环境是java8,天然不行:atom

在这里插入图片描述
我如今将其切换到java10:
在这里插入图片描述
这个时代代码无误,正常编译打印:spa

在这里插入图片描述
咱们还能够这样:code

var s = "庆哥java";
        var i = 10;

        String s1 = "庆哥java";
        int i1 = 10;

注意下区别!也就是说在java 10中新添加的这个特性var,其实准确来讲这并非一个关键字,这个特性以前在java9中就已经出现,可是后来又给删除了,咱也不知道为啥,咱也不敢问!blog

有这这个var,正如你所看到的那样,咱们能够直接使用这个var来声明变量,而不用管你究竟是String仍是int,咋样,是否是感受很方便,这样一来,咱们编码的效率是否是会大大提升了嘞!

局部变量类型推断

提及来,这个特性叫作局部变量推断,咱们看这行代码:

String s1 = "庆哥java";

你若是你要声明一个字符串类型,那就须要先使用String去声明,同理若是你想声明一个整型变量,那就得使用int去声明,这看起来很正确,可是实际编码中却感到麻烦,由于你须要写各类不一样的变量声明,必定程度是否是增长了代码的难度和复杂度!

那些不学java的可能会说,使用python或者js能够一分钟搞定的事情,要是用Java来作可能得10分钟,我以为这个锅,要用各类不一样变量声明这种特性要背一点!

做为一门长久不衰的高级语言,java应该很智能的才对,当我写出“庆哥java”你就应该知道我这个声明的是个字符串变量,而不用很呆板的在前面加上个String类型你才知道是字符串变量,同理,像整型int也该如此!

这个其实就是局部变量类型推断,根据具体的数值变量推断出其变量类型,并且这个功能在其余语言上早就有了!

想必学过js的看到这个var应该很熟悉吧,js中早就在用这个var了,详细点来讲,这种局部变量推断在其余语言上早已应用,具体为:

  1. js中的let和var
  2. Scala和kotlin中的var和val
  3. C++中的auto
  4. C#中的var经过使用:=运算符声明来支持

而java,为啥没有,这不该该啊,一句扎心的话,在java10以前啊,咱们的大java是惟一没有局部变量类型推断或者支持var关键字的语言!

想一想就以为,真的不该该!

java中对类型推断的支持

这里有个知识点,在java中,其实也是对类型推断这块作了努力的,在java8中引入了lambda表达式,方法引用和Stream等都是对类型推断作了很大改进,说实话,这几块本身仍是须要花时间好好研究研究!

虽然上述说的对类型推断作了改进,可是你仍是得机械的呆板的加上正确的类型来声明局部变量!

我这里一直在强调局部变量,你看这个:

在这里插入图片描述
懂我意思了吧!要否则人家咋叫作局部变量类型推断呢!

回到上面所说的,java好像对局部变量类型推断不怎么感冒啊,但是,不要紧,如今java10的到来,终结了这一尴尬现象,我们的java也有var了!

var使代码变得简洁

先来个栗子:

public static void main(String[] args) {
        var str = "庆哥java";  //自动推断str的类型为String
        var list = new ArrayList<String>();  //自动推断出ArrayList<String>
    }

有没有发现,使用var以后代码变得更加简洁了,咱们以上面这个list为例,加入咱们不适用var的话是否是须要这样书写:

ArrayList<String> strings = new ArrayList<String>();

可是使用var使用,咱们能够直接省略前面的ArrayList,这是否是就是减小了重复使得你的代码更加的简洁呢?

关于var使用的一些注意事项

咱们能够看到,var的使用仍是比较简单的,可是在使用它的时候依然有一些事情须要咱们特别注意,一不当心,你可能就搞错了!

正如上面给你们所展现的那样,咱们使用var能够自动帮咱们进行局部变量类型的推断,这里你须要知道的是,这个局部变量的类型是由编译器帮咱们推断的!

咱们一直在说局部变量类型推断,所以,这个var只能用于声明局部变量,好比方法内部,初始化代码块上以及for循环中声明的局部变量!

要记住,你是不能使用它来声明成员变量或者字段的,这点要注意,请记住,人家是“局部变量类型推断!”

咱们看似var是一个关键字,可是实际上它并非一个关键字,而是一个保留的类型名称,这一点也是须要你们注意的!

好了,本篇文章给你们简单介绍了java10中的新特性,话说,你喜欢这个var吗?

相关文章
相关标签/搜索