Kotlin从入门到放弃之基础篇(一)——基本数据类型

来源:互联网 发布:单片机c51简易数字钟 编辑:程序博客网 时间:2024/06/10 20:11

Koglin从入门到放弃之基础篇(一)

写在前面的乱七八糟的话:该文章是本菜鸟一边学习一边完成的,所以有很多疏漏的地方欢迎各位大神前来指正。不胜感激!

基本数据类型

Kotlin中,所有变量的成员方法和属性都是对象。一些类型是内建的。Kotlin的基本数据类型包括:数值,字符,布尔,以及数组等。

数值

Kotlin提供了如下数值类型(在Kotlin中,字符:’charactors’不是数值类型)

类型 字节宽度 Double 64 Long 64 Float 32 Int 32 Short 16 Byte 8

字符

字符类型用Char表示,不能直接被用作数值类型。
字符是由单引号包裹的,特殊字符通过反斜杠\转义。以下字符序列支持转义:\t,\b,\n,\r,\’,\”,\和$。其他字符需要Unicode转义语法:\uFF00。

    fun charToInt(a :Char) :Int{        if(a !in '0'..'9' )            throw IllegalArgumentException("Out of range")        return a.toInt() - '0'.toInt() //字符显示转换为数值类型    }

字符可以通过显示转换为数值类型,在这个过程中,字符会被装箱。特性不会被装箱保留

布尔值

布尔值用Boolean表示,并且有两个值true和false。
如果有空引用,则布尔值将会被装箱
布尔值的内置操作有:
♣ 懒分离 ||
♣ 懒结合 &&
♣ 否定 !

数组

Kotlin中的数组由Array表示,它有get和set方法(通过运算符重载可以由[]调用),以及size方法和其他一些常用的函数。

    class Array<T> private constructor() {         fun size(): Int         fun get(index: Int): T         fun set(index: Int, value: T): Unit         fun iterator(): Iterator<T>        // ...    }

如若创建一个数组,可以由arrayOf()方法,传递每一项的值来完成。也可以用库函数arrayOfNulls()创建一个指定大小的空Array。或者通过指定Array的大小并提供一个迭代器。

     val a : Array<Int> = arrayOf(1,2,3)//通过arrayOf()创建     val b  = arrayOfNulls<Int>(4)//通过arrayOfNulls()创建     val c = Array(5,{i -> (i*i).toString()})//通过迭代器创建一个内容为"0" "1" "4" "9" "16"的数组

Kotlin中有专门的类来表示原始类型的数组从而避免过度装箱,:ByteArray,IntArray,ShortArray等。这些类与Array不存在从属关系。但他们有一样的方法属性。并且每个都有相对应的库函数。

 val a : IntArray = intArrayOf(1,2,3)

字符串

字符串由关键字String表示,并且字符串是不可变的。字符串中的元素可以通过索引操作str[i]来读取,也可以通过for来循环迭代。

    fun printStr(s :String){        for(a in s){            print(a)        }    }

Kotlin中有两种类型的String,其中一种和Java中的string相似。可以包含分隔符,即:

    val s:Stirng = "Hello World"

整行的String通过”“”将内容包裹起来,不可以包含分隔符但是可以包含其他的字符。

    val s:String ="""        fun printStr(s :String){        for(a in s){            print(a)        }    }    """

模版

Kotlin中的字符串可以包含模版。模版表达式由$开始并包含另一个简单的名称:

    val a = 1    print("a = $a")//输出为a = 1

$包含的内容也可以用大括号{}包裹起来

    val s = "1234"    print("s.length is ${s.length}")//输出为s.length is 4

字面常量

下面是所有类型的字面常量:

♣小数(Dicimals):123
♣长整型以大写的L结尾: 123L
♣十六进制以0x开头:0x0F
♣二进制以0b开头:0b11010011

传统的浮点数表示
♣Double:123.5, 123.5e10
♣Floats:123.5f或者123.5F
*不支持八进制

装箱

Kotlin在Java平台上运行,数值被JVM虚拟机以字节码的形式存储,除非我们做可控标识符(使用字符?)或者泛型。后者数值是装箱的。
*经过装箱的数值是不保留特征的,但他们的值是相等的(ps:纯属废话)。

    val a:Int =1    print(a===a) //打印为true    val b : Int? = a    val c : Int? =a    print(b===c)//打印为false    print(b==c)//打印为true

显示转换

由于数值在Kotlin中不同的表示,短类型不是长类型的自类型,因此Kotlin中不支持隐式转换。因此我们需要对数值进行显示转换。

    val a : Byte =1//允许    val b : Int =a //不允许    val b:Int = a.toInt()//允许

所有的数值类型都支持以下转换:
♣ toByte(): Byte
♣ toInt(): Int
♣ toShort(): Short
♣ toLong(): Long
♣ toFloat(): Float
♣ toDouble(): Double
♣ toChar(): Char

发生隐式转换时一般不容易被察觉,所以我们需要根据上下文进行推断,同时算术运算符也可以为合适的转换进行重载

    val a = 1.toLong() + 1 //Long+Int=>Long

运算符

Kotlin支持标准的算术运算符,这些运算符会被声明为相应的类成员。(Kotlin中没有三目运算符)

在Kotlin中基础运算符包括:
♣ 赋值运算符:等于’=’
♣ 算术运算符:加’+’,减’-‘,乘’*’,除’/’,取余’%’,自增’++’,自减’–’,
♣ 字符串链接符:’+’
♣ 关系运算符: 相等’==’,不等’!=’,大于’>’,小于’<’,小于等于’<=’,大于等于’>’
♣ 闭区间运算符:’..’(例:’1..10’表示从1到10的区间,包括1和10),半闭区间运算符’until’(例:’1 until 10’表示从1到10,包括1但是不包括10)
♣ 逻辑运算符: 逻辑与’&&’,逻辑或’||’,逻辑非’!’
♣ 空安全操作符:’?’,’!!’
♣ Elvis操作符: ‘?:’ <结果> = <表达式1> ?: <表达式2> 如果表达式1为null则返回表达式2的内容,否则返回表达式1,注意:当只有当表达式1为null时才会对表达式2求值
♣ 位运算符: 带符号左移’shl(bits)’,带符号右移’shr(bits)’,无符号右移’ushr(bits)’,按位与’and(bits)’,按位或’or(bits)’,按位异或’xor(‘bits’)’,按位翻转’inv(bits)’

运算符优先级

优先级 运算符 结合性 1 () [] 从左到右 2 ! +(正) -(负) ~ ++ 从右到左 3
    / %
从左到右 4 +(加) -(减) 从左到右 5 << >> >>> 从左到右 6 < <= > >= 从左到右 7 == != 从左到右 8 &(按位与) 从左到右 9 ^ 从左到右 10 | 从左到右 11 && 从左到右 12 || 从左到右 13 ?: 从右到左 14 = += -= /= %= &= |= ^= ~= <<= >>= >>>= 从右到左
阅读全文
0 0