Kotlin 和 Java 10 中 var 的区别

KotlinVsJavaImage.JPG

最重要的区别是Kotlin中的var是关于可变性的,而Java中的var是关于类型推断的。

可选类型声明与无类型声明

  • Kotlin
// 如果声明一个可变变量同时对其进行初始化,则可以不显示的指定类型,也可以显示指定
var variable = 1
var variable : Int = 1

// 如果我们想声明一个变量但不直接初始化,则需要指定它的类型
var variable : Int
  • Java
// 在Java中,只能在声明时即初始化变量的时候使用var,即使想显示指定类型也不可以
var variable = 1;

// 以下代码会报错
var variable;
variable = 1;
// 编译时错误: Cannot infer type: 'var' on variable without initializer

关键字与标识符

Kotlin 中,var是一个关键字,这意味着我们不能将它用作变量、参数、方法或类的名称。而 Java 10var定义为具有特殊含义的标识符。
这意味着在 Java 10 中,我们仍然可以定义一个名为var的变量、参数或方法。

public void var() {
    // ...
}

public void method(int var) {
    // ...
}

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

但请记住,从 Java 10 开始,但不能在类名或接口名中使用它

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

可变性

Kotlin中用var声明的变量总是可变的,而在Java中用var声明的变量可以是可变的或final的:

// Java 中用var声明的变量可以用final修饰
var mutableValue = 1;
final var immutableValue = 1;
// 在 Kotlin 中,没有final关键字,final变量用val来声明
val immutableValue = 1

全局和局部使用

  • Kotlin

Kotlin 中,我们可以使用var来声明全局和局部变量,以及类成员:

var globalVar = 1

class MyClass {

    var clzVar = 1    

    public fun myFunction() : Int {
        var variable = 1
        return variable
    }
}
  • Java

Java 中,我们只能使用var来声明局部变量:

public class MyClass {

    // 不可以用var声明类成员

    public int myFunction() {
        var variable = 1;
        return variable;
    }
}
# Kotlin  Java  var  Java 10 

作者:ITmob
来源:ITmob.cn
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×