zoukankan      html  css  js  c++  java
  • kotlin 学习入门

    最近kotlin越来越受欢迎了,好多网站预言--kotlin将在之后的几年里彻底替换java,成为一种新的服务端编程语言。kotlin基于java。所以很多语法与java类似,从java切换到kotlin基本不需要成本。

    最近在用kotlin在写一个项目,刚开始写代码感觉比较别扭,一旦用熟练后,再切换回java,就会感觉到java的语法有点累赘了。下面将使用kotlin中的心得分享给大家。

    语法见:https://www.kotlincn.net/docs/reference/basic-types.html

    太基础的语法参见上述链接,在博客中只写了作者在使用过程中感觉和java有较大差别的地方。

    1,数据类型

    kotlin中的数据类型和java相同

    TypeBit width
    Double 64
    Float 32
    Long 64
    Int 32
    Short 16
    Byte 8

    每个数字是有符号的。而且在kotlin中提供了很多数据类型相互转换的方法,例如

    val valInt = 23 // 默认为Int类型
    val valLong = valInt.toLong() // 将23 转换为Long类型
    val valShort = valShort.toShort() // 将23 转换为Short类型
    val valByte = valByte.toByte()   // 将23 转为Byte类型

    上面是数据转型的例子,但是在Int转为Byte时,如果大于127,在Int转为Byte时,在转回Byte时会变成负数,这时候要加上256。java 中也存在这样的问题

    下面介绍一下kotlin中对象的定义

    val a = 10 // 定义不可变的int类型值a
    var b = 20 // 定义可变的int类型值b
    val c = IntArray(5) // 定义引用不可变的Int类型数组 c
    var d = LongArray(8) // 定义引用可变的Long类型数组 d

    首先可以看出在定义变量是不用再变量名称前写明变量的类型,其次在定义变量时不用使用new关键字。 

    kotlin中默认的数值类型为int。

    上面代码中最大的区别在于定义中的val,var。val代表值(对象则指引用)不可变,var代表值(对象则指引用)不可变。这些规则是在编译器检验的,如果在声明对象时,声明为val在后面的代码中,如果对该对象的值或引用做出修改,那么就会报错。这时需要将对象声明为var类型的。

    for循环

    在kotlin中如果写for循环,你会感觉是一件很开心的事,kotlin提供了很多类型的函数

    for(i in 1 until n){
        // 不包含n
    }
    for(i in 1 ... n){
        // 包含n
    }
    
    for(i in n downto 0){
        // 向下遍历到0
    }
    for(i in 0 until 0 step 2){
        // 循环步长为2
    }
    (0 until n).forEach{ i->doSomeThing()}
    // 最好用的for循环

    2,类的定义

    kotlin也是面向对象的语言,所以在语法中也有类的定义,在讲之前先解释一下权限修饰符。kotlin也包含和java中的public,private和protected这三个修饰符,但是在kotlin中类前 不写修饰符表示为public。除此之外kotlin中还存在另外一个修饰符:internal,这个修饰符表示只有模块内部才能访问。当你使用kotlin开发了一个模块,有些类定义为API,但是其中有些成员或函数,在自己的模块中的其他类可能会调用,但是又不希望使用你API的人调用,就可以使用internal修饰。

    类的继承

    类的定义在这里不再详细介绍,在这里只介绍一下类的继承时的父类中构造函数有参数的情况:

    class open Demo constructor(name: String){
        private val name: String
        init{
            this.name = name // 单个构造函数时,构造函数体
        }
    }
    
    class SubDemo constructor(name: String) : Demo(name){
        
    }
    1. 首先如果一个类不是抽象的,而且要被其他类要继承,那么这个类就要在定义时用open关键字声明,该类中需要被继承的方法也要有open关键字修饰。
    2. 子类继承的父类写在子类名称之后,用“:”隔开,最重要的一点就是,父类不能只写一个名称,而且要给其构造函数传参数。

    以上就是我最近的学习心得,很多细节没有描述,我会后续补充,以上内容供大家参考并批评指正。

    在实际的项目编写过程中,kotlin代码与java代码可以共存,且可以相互调用,这就使得java工程师切换到kotlin可以更好的理解kotlin语法。其次kotlin工程师与java工程师可以共同开发一个项目,只要商定API,那么就不会相互影响。

    I am chris, and what about you?
  • 相关阅读:
    c#中使用多线程访问winform中控件的若干问题(转)
    Winform 分页控件(转)
    C#争论:什么时候应该使用var?
    C#的Contains() 值还是引用
    DataTemplate
    DX11_基于GPU_ComputeShader的3D精确拾取
    串行的BitonicSort双调排序
    Directx11_使用Effect框架包装ComputeShader
    Silverlight自适应布局
    poj3626广搜
  • 原文地址:https://www.cnblogs.com/arax/p/7805496.html
Copyright © 2011-2022 走看看