Kotlin第一讲——数据类型

内容简介:Kotlin 系列第一讲——数据类型

boolean 类型

  val b: Boolean = true	
  val b1: Boolean = false

Number 类型

可定义的类型

类型字节长度
Double64
Float32
Long64
Int32
Short16
Byte8

如何定义

fun main() {	
    /**	
     * 默认都是 double 类型	
     */	
    val d = 2.0	
    /**	
     * 默认都是 float 类型,使用f结尾	
     */	
    val f = 2.0f	
    /**	
     * 16进制表示	
     */	
    val hex = 0XFF	
    /**	
     * 二级制表示	
     */	
    val number = 0b00000001	
}

Kotlin 中存在一个特点, Float 和 Double有一个静态变量NaN(不是一个数的数)

fun main() {	
    /**	
     *  不会抛异常	
     */	
    val naN: Double = 0.0 / 0.0	
    /**	
     *  不会抛异常	
     */	
    val naN2: Float = 0.0f / 0.0f	
    /**	
     * 抛异常	
     */	
    val intVar = 0 / 0	
    println(naN)	
    println(naN2)	
    /**	
     * Double 与 Float类型存在一个 Nan 类型(不是数的数)	
     */	
    println(naN == Double.NaN)	
    println(naN2 == Float.NaN)	
}

输出结果:

    NaN	
    NaN	
    false	
    false	
    Exception in thread "main" java.lang.ArithmeticException: / by zero	
    at com.qihoo.kot.KotlinDemoKt.main(KotlinDemo.kt:13)	
    at com.qihoo.kot.KotlinDemoKt.main(KotlinDemo.kt)

数字类型做比较

kotlin中 ==相当于调用 equals 方法。在做大小比较时候和 java 不同 kotlin 具有严格的校验。不同的数据类型是无法作比较的。(在编译时期就会报错,包括赋值)

类型转换

toByte() 

toShort() 

 toInt()

toLong()

toFloat() 

toDouble() 

toChar()

位运算

Kotlin 不在像 java 使用 << >> | & 操作符来进行位运算,而是提供了对应的函数.

运算符对比java
shl有符号左移( java 的 <<
shr有符号右移( java 的 >>
ushr有符号右移( java 的 >>>
and位与( java 的 &
or位或( java 的`
xor位异或( java 的 ^
inv位非( java 的 ~

让我们来巧妙的复习下 kotlin 中的位运算:

fun main() {	
    val type1 = 0X10000000	
    val type2 = 0X20000000	
    val type3 = 0X40000000	
    val type4 = 0X80000000	
    var flag = type1 or type2 or type3	
    if ((flag and type1) != 0) {	
        println("包含type")	
    }	
    if ((flag and type2) != 0) {	
        println("包含type2")	
    }	
    if ((flag and type3) != 0) {	
        println("包含type3")	
    }	
    if ((flag.toLong() and type4) != 0L) {	
        println("包含type4")	
    }	
    // 去除规则 当前flag 包含 type1和type2规则,去除type2的规则	
    flag = flag and type2.inv()	
}

区间 Range

Kotlin特殊的类型,和数学上的区间概念属于同一概念

定义闭区间

    // 0到1024的闭区间[0,1024]	
    val range = 1..1024

半开区间

    // 0到1024的闭区间[0,1024)	
    val openRange = 1 until 1024

Char

和 java 的一样,占2个字节(没啥好说的)。

字符串

Kotlin 相比较 java 字符串,变动更为的强大。支持了更多的方法和定义类型。

直接索引访问字符

val c = str[0]	
for (c in str) {	
    println(c)	
}

字符串模板

其实很多语言都有这个功能。在 java 的世界中通过 +拼接字符串的形式,比较复杂丶难用丶并且易出错。

kotlin 支持字符串模板的功能(其他语言玩烂的功能),只需要通过 $符合编写表达式。如:拼接一个字段的值:$XXX字段名,拼接运算表达式返回值:${表达式}

更夸张的字符串

当我们要输出,一个有格式的模板字符串。使用 \n 简直是噩梦。Kotlin 为我们考虑了这点,只需这样定义:"""XXXX内容"""

fun main() {	
  val superStr="""aaaa	
      |dddd	
      |s	
      |asfa${a+b}	
  """.trimMargin()	
  println(superStr)	
}

总结

相比较 java 数据类型区分基本与引用,而kotlin给我的感觉就是已经不存基本数据类型的概念。所有的类型全部封装成了类,并且自动拆装箱。这也是所有类型赋值必须类型相同才可以赋值。而 java 在基本数据类型赋值上,处于睁一只眼,闭一只眼。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值