zoukankan      html  css  js  c++  java
  • Kotlin------数据类型和语法

    今天简单的来介绍Kotlin的基本语法。编程语言大多相通的,会基础学起来都很快,理论都一样,实现的代码语言不一样而已。

    数值类型

    Kotlin 处理数值的方法和 java 很相似,但不是完全一样。比如,不存在隐式转换数值的精度,并且在字面上有一些小小的不同。

    Kotlin的数值类型包括

    类型位宽
    Double 64
    Float 32
    Long 64
    Int 32
    Short 16
    Byte 8

    主要是以下几种字面值常量:

    • 十进制数:123
    • 长整型要加L:123L
    • 十六进制数:0x0f
    • 二进制数:0b00001011
    • Kotlin不支持八进制数
    • 双精度浮点数(Double):123.5 、 123.5e10
    • 单精度浮点数(Float)要加f或F:123.5f

    布尔值

    关键字Boolean,只有true和false两种取值,和Java一样可以使用&&||!进行与或非操作。

    字符

    关键字Char,和Java中char基本用法差别不大。

        
    var useChar: Char = 'c'

    数组

    关键字Array,Kotlin中数组的使用和Java差别挺大,比如我要创建数组,就得使用arrayOf

    //使用arrayOf简单创建数组
    var students: Array<String> = arrayOf("One", "Tow", "Three")
    var studentNums = arrayOf(1, 2, 3)

    使用arrayOfNulls可以创建一个指定长度,元素内容为空的数组

    //创一个长度为10,元素内容皆为null的数组
    var emptyArray = arrayOfNulls<String>(10)

    Kotlin对一些基础类型定义数组会有拆装箱的开销,所以也可以使用自身封装好的一些API进行创建数组,以降低开销

    //创建一个int数组,避免封箱装箱操作
    var intArray = intArrayOf(1, 2, 3)

    Kotlin数组还支持使用闭包进行初始化,就像下面这样

    //使用闭包初始化一个Array<String>,数组内容为["0", "1", "4", "9", "16"]
    var asc = Array(5, { i -> (i * i).toString() })

    字符串

    关键字String,用法和Java差别不大。字符串是不可变的。

    字符串的元素——字符可以使用索引运算符访问: s[i]。 可以用 for 循环迭代字符串:

    var useString: String = "I am a boy"
    var firstChar: Char = useString[0] //相当于Java的String.charAt(0)
    for (c in useString) {
        println(c)//遍历
    }
     

    定义变量

    Kotlin的变量分为可变和不可变,和Java中是否对变量声明final一样,它定义一个变量的语法如下:

    格式: 可变类型 变量名:数据类型

    • 可变类型分为var、val两种,分别代表可变、不可变;
    • 数据类型包括Kotlin内置的数据类型以及自定义类deng ;
    • 定义变量时需要明确数据类型;

    var,val可以简单理解为:

    var 是可写的,在它生命周期中可以被多次赋值;

    val 是只读的,仅能一次赋值,后面就不能被重新赋值。

    /***Kotlin版代码***/
    //定义可变变量
    var id: Int = 1 //
    var name: String = "字符串"
    //定义不可变变量
    val useVal: Int = 1000
    /***Java版代码***/
    int id = 1;
    String name = "字符串";
    final int useFinal = 1000;

    Kotlin支持类型推到的,在Kotlin中大部分情况你不需要说明你使用对象的类型,编译器可以直接推断出它的类型。

      val str = "abc"
            println(str)
            println(str is String)
            println(str::class)
            println(str::class.java)
    
    //        abc
    //        true
    //        class java.lang.String (Kotlin reflection is not available)
    //        class java.lang.String
    
            val d = Date()
            println(d)
            println(d is Date)
            println(d::class)
            println(d::class.java)
    
    //        Fri Jun 09 00:06:33 CST 2017
    //        true
    //        class java.util.Date (Kotlin reflection is not available)
    //        class java.util.Date
    
            val bool = true
            println(bool)
            println(bool::class)
            println(bool::class.java)
    
    //        true
    //        boolean (Kotlin reflection is not available)
    //        boolean
    
            val array = arrayOf(1,2,3)
            println(array)
            println(array is Array)
            println(array::class)
            println(array::class.java)
    
    //        [Ljava.lang.Integer;@7b5eadd8
    //        true
    //        class [Ljava.lang.Integer; (Kotlin reflection is not available)
    //        class [Ljava.lang.Integer;
  • 相关阅读:
    android http多请求异步封装对你绝对有用
    浅论Android网络请求库——android-async-http
    Android Http异步请求,Callback
    STL慎重选择删除元素的
    iOS开展
    【Bootstrap】兼容IE8、谷歌和其他主流浏览器的观众IMAX风格的页面
    Codeforces #180 div2 C Parity Game
    vS2010 列表控件 加入右键菜单
    cocos2d-x 3.2 2048——第六部分(最后一章)
    E: 无法获取锁 /var/lib/apt/lists/lock
  • 原文地址:https://www.cnblogs.com/zhangqie/p/7455430.html
Copyright © 2011-2022 走看看