zoukankan      html  css  js  c++  java
  • Kotlin中变量不同于Java: var 对val(KAD 02)

    原文标题:Variables in Kotlin, differences with Java. var vs val (KAD 02)

    作者:Antonio Leiva

    时间:Nov 28, 2016

    原文链接:http://antonioleiva.com/variables-kotlin/

    Kotlin系列课程的第二课:Kotlin中变量不同于Java: var 对val。

    在这第二章节中,我们将了解Kotlin中变量是怎样工作的,什么是val和var,什么时间使用它们。

     

    我从这开始,是因为理解这部分内容对后续讨论怎样在类中创建“字段”时非常有用(还可了解它们不是字段)。

     

    Kotlin变量

    如Java那样,只要在变量的范围内执行代码,Kotlin变量就可以被赋值、修改,在程序中不同位置被使用。

     

    但是,我们将聚焦在它与Java不同的方面。

     

    • 变量分可变的和不可变的

    在Java中也分可变与不可变(如果不希望变量被改变,可将变量说明为final),但是在Kotlin中,更简洁的、更常用的是:只要可能,Kotlin中首选时不变值

    事实上,在程序中大部分地方使用不可变的变量,可带来很多益处,如:可预测的行为和线程安全。

     

    • 用val或var声明变量,指明它们是不可变的或可变的

    在Kotlin中有趣的是大部分情况你不需要说明你使用对象的类型,而编译器就是推断它。

    所以,我们只需要依据要产生的变量类型填写var或val,其类型通常能够被推断出来。我们也可以明确地指定变量类型。

    一些例子:

    1 var x = 7
    2 var y: String = "my String"
    3 var z = View(this)

    说明:如你所见,你不需要用new来创建对象的新实例。

    • 类型转换是自动完成的

    无论何时,编译器能够检测没有其它可选项,自动地完成类型转换。非常棒!

    1 val z: View = findViewById(R.id.my_view)
    2 
    3 if (z is TextView) {
    4     z.text = "I've been casted!"
    5 }

    看见我没有调用setText()吗?这将在下一篇说明!

    • 在Kotlin中,所有都是对象

    没有基本类型,没有void。如果有时没有返回值,实际时返回Unit对象。大多数情况下,Uint可以省略,但是它确实存在的,被隐藏了。

    因此,所有这些比哪里都是对象:

    1 val x: Int = 20
    2 val y: Double = 21.5
    3 val z: Unit = Unit
    • 简洁的数字类型不能赋值给复杂的类型

    例如,整形不能赋值长变量。下面的代码不能通过编译:

    1 val x: Int = 20
    2 val y: Long = x

    你需要明确的进行转换:

    1 val x: Int = 20
    2 val y: Long = x.toLong()

    结论

    这些是在Java和Kotlin之间能够找出的明显不同之处。通常,Kotlin变量提供更加灵活的安全的(由于任何可能时用val约定)和更清晰的简洁的代码

     

    仍有疑问?准备阅读下篇!

  • 相关阅读:
    Unity3D研究院之Assetbundle的实战(六十三)
    Unity3D研究院之Assetbundle的原理(六十一)
    常见图片格式详解
    unity 查看打包资源占用
    MUI框架-04-切换页面头部文字重叠
    MUI框架-03-自定义MUI控件样式
    MUI框架-02-注意事项-适用场景-实现页面间传值
    MUI框架-01-介绍-创建项目-简单页面
    安卓app开发-05-Android xml布局详细介绍
    安卓app开发-04- app运行的运行和调试
  • 原文地址:https://www.cnblogs.com/figozhg/p/6119545.html
Copyright © 2011-2022 走看看