Kotlin-基本类型

首先在文章首页附上中文文档,方便大家查阅。

Kotlin 语言中文站 (kotlincn.net)

Android主推的语言就是kotlin,学习Kotlin是安卓开发不可避免的。另外Koltin的功能也是非常强大。它不仅仅可以做Android开发,也可以做IOS开发、服务端开发、Web前端开发…

Kotlin可以进行全栈开发。

下面将开始Koltlin的正式学习,我们将与Java对比学习,进一步加深印象。

1. 常量与变量

在koltlin里面:

  • 运行时常量(或者说:只读的变量)使用val修饰,可读不可改
  • 变量使用var修饰,可读可改
fun main() {
    
    
    var name: String = "Kotlin"
    name = "Java"
    println(name)
}

可以看到声明的结构为:声明是否可改 名字 类型 赋值

在Kotlin中存在类型推导

fun main() {
    
    
    var name = "Kotlin"
    name = "Java"
    println(name)
}

也就是我们的String类型的注明是可以省略的,Kotlin的编译器会根据我们的赋值自动的推导常量的类型。非常nice

2.基本类型

  1. 整型:
Byte: 内存中占8位,表数范围-128-127,兼容java的byte和Byte类型。
Short: 内存中占16位,表数范围-32768~32767,兼容java的short和Short类型。
Int: 内存中占32位,表数范围-2的31次方~2的31次方-1,兼容java的int和Integer类型。
Long: 内存中占32位,表数范围-2的63次方~2的63次方-1,兼容java的long和Long类型。

所有未超出 Int 最大值的整型值初始化的变量都会推断为 Int 类型。如果初始值超过了其最大值,那么推断为 Long 类型。 如需显式指定 Long 型值,请在该值后追加 L 后缀。

  1. 浮点型:
Float: 32位浮点型,当精度要求不高时可以使用此种类型。
Double : 64位双精度浮点型,当程序要求存储很大或者高精度的浮点数时使用这种类型

对于以小数初始化的变量,编译器会推断为 Double 类型。 如需将一个值显式指定为 Float 类型,请添加 fF 后缀。 如果这样的值包含多于 6~7 位十进制数,那么会将其舍入

在Kotlin中数字没有隐式拓宽转换,具有 Double 参数的函数只能对 Double 值调用,而不能对 FloatInt 或者其他数字值调用。

如需将数值转换为不同的类型,请使用显示转换

fun main() {
    
    
    fun printDouble(d: Double) {
    
     print(d) }

    val i = 1    
    val d = 1.1
    val f = 1.1f 

    printDouble(d)
   // printDouble(i) // 错误:类型不匹配
   // printDouble(f) // 错误:类型不匹配
}

这是与Java不同的地方,在java中,我们是可以将byte类型的数字自动转换成int类型。但是在Kotlin中,编译器不会帮我们进行这样的操作。我们需要自己手动转换。例如:

val b: Byte = 1 // OK, 字面值是静态检测的
val i: Int = b // 错误

显示转换:

   val b:Byte=11
   val a:Int=b.toInt()
   println(a)

每个数字类型支持如下的转换:

  • toByte(): Byte
  • toShort(): Short
  • toInt(): Int
  • toLong(): Long
  • toFloat(): Float
  • toDouble(): Double
  • toChar(): Char
  1. 字符型

通常表示单个字符,字符型值必须使用单引号括起来,kotlin使用16位的unicode字符集作为编码方式,因此kotlin程序支持各种语言的字符。

有如下三种表示形式:

  1. 通过单个字符来指定字符型值,如’A’,‘9’;
  2. 通过转义字符表示特殊字符值,如‘\n’.
  3. 直接使用Unicode,格式是‘\uxxxx’。

与java不同的是,kotlin的char型变量不能当成整数值使用,char就是简简单单的字符型。

  1. Boolean 类型

Boolean类型变量不能接受null值,Booean?类型的变量才能接受,Boolean类型将直接映射为java的boolean,但是Boolean?类型将会映射boolean的包装类Boolean.

注意:

在Kotlin里面没有int,float…,,就是没有java中的内置数据类型。它全部都是引用数据类型,相当于Java中的包装类。

但是这样并不会影响我们代码的运行效率,因为编译器会帮助我们将引用类型按情况转化成java中的内置数据类型。
准确的说,kotlin代码和java代码一样会编译成字节码文件,在字节码文件里,这些引用类型的性质和你直接在java文件里使用内置数据类型的效果一致的。

猜你喜欢

转载自blog.csdn.net/qq_43867812/article/details/131336719