var关键字的比较:Java10 VS Kotlin

Java10之后的一个重要变化是引入了var关键字,在Kotlin中我们对它已经很熟悉了,那么Java中的var和Kotlin有哪些不同呢?

1. 声明初始化


Kotlin

kotlin中我们声明同时初始化时,可以省略变量类型,当然也可以不省略

//省略
var myVariable = 1

//不省略
var myVariable : Int = 1

当我们声明和初始化分开时,必行指定类型

var myVariable : Int //不可省略
...
myVariable = 1

Java

Java是类型声明前置的,var变量类型不能同时存在,因此只有声明的同时初始化才能使用var

var myVariable = 1; //ok

var myVariable; //ng
myVariable = 1;

2. 关键字与标识符


Kotlin的var是关键字(keyword),而Java的var只是一个标识符(Identifier)。
关键字不允许作为变量/方法名存在,而标识符允许,所以Java中以下代码没问题(至少目前是这样的)

public void var() {
    // do something
}
 
public void method(int var) {
    // do something
}
 
public void method() {
    int var = 1;
    // do something
}

但是需要特别注意,var不能用来定义一个class

public static class var {
}

以上代码会报编译错误

Error:(1, 1) java: 'var' not allowed here
  as of release 10, 'var' is a restricted type name and cannot be used for type declarations

3. 可变性


Kotlin的var意味着可变,但是Java的var没有任何可变性上的语义,可变性通过final来控制

//Kotlin的immutable
val immutableInt = 1
//Java
var mutableInt = 1; //mutable
final var immutableInt = 1; //immutable

4. 作用域


Kotlin

Kotlin中var变量允许存在于top-level

var myGlobalVar = 3
 
class MyClass {
 
    var myVar = 3    
 
    public fun myFunction() : Int {
        var myVariable = 3
        return myVariable
    }
}

Java

Java中var变量只能是局部变量,作为类的成员变量也是不允许的

public class MyClass {
 
    //not possible for member variables
    //private var myVar = 1;
 
    public int myFunction() {
        var myVariable = 3;
        return myVariable;
    }
}

5. 总结


通过比较我们能感受到,var在Java和Kotlin中的功能定位不同,Kotlin的var主要用于可变性的声明,而Java的var只是一个类型推到的语法糖。这两者除了name一样以外,其实并没什么可比性。

发布了116 篇原创文章 · 获赞 15 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/vitaviva/article/details/105221974