欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

2、Kotlin基本数据类型

程序员文章站 2024-03-14 22:57:11
...
(1)基本语法
  • Kotlin每行语句可以不以分号结束
  • 单行注释//
  • 多行注释/**/
(2)变量和常亮
  • 在 Kotlin 中,所有东西都是对象
  • 变量var: 可以被多次赋值
fun main(args:Array<String>){
    
    var a:Int = 12
    a = 20
    var b:String = "hello"
    b = "world"
    println(a) // 20
    println(b) // world
}
  • 常量val:仅能一次赋值
fun main(args:Array<String>){
    
    val flag:Boolean = true
    // Error:(6, 5) Kotlin: Val cannot be reassigned
    // flag = false
}
  • 变量和常量的简化写法
    • 声明时数据类型和初始化至少给定一个,或者两者都声明
    • 如果未进行初始化就必须给定数据类型
    • 如果未进行给定数据类型,就需要进行初始化,kotlin编译器会自动根据右侧的值推导数据类型
// 仅初始化,类型推导
var a = "aaaa"
val b = true
// 仅声明类型
var c:String
val d:Int
// 类型和初始化都声明
var e:Int = 12
val f:String = "abc"
(3)Boolean类型
  • true
  • false
val flag:Boolean = true
val aaa:Boolean = false
println(flag) //true
println(aaa)  //false
(4)Number类型
  • 浮点型
    • Double:64位
    • Float:32位
  • 整型
    • Long:64位
    • Int:32位
    • Short:16位
  • 字节
    • Byte:8位
/**
* Int类型 4
*/
val a:Int = 12
val b:Int = 0xff //255
val c:Int = 0b00000011
val e:Int = 123_456 //下划线纯粹是为了分割数字,方便易读
val maxInt:Int = Int.MAX_VALUE //2.147483647E9
val minInt:Int = Int.MIN_VALUE //-2.147483648E9
println(Math.pow(2.0,31.0)-1) //2.147483647E9
println(-Math.pow(2.0,31.0)) //-2.147483648E9
/**
* Long类型 8
*/
val d:Long = 123L
val maxLong:Long = Long.MAX_VALUE
val minLong:Long = Long.MIN_VALUE
/**
* Float类型 4
*/
val f1:Float = 2.0f
val f2:Float = 1e3f //表示10^3
val fMax:Float = Float.MAX_VALUE
val fMin:Float = Float.MIN_VALUE
/**
* Double类型 8
*/
val d1:Double = 3.0 //小数默认为Double
/**
* Byte 1
*/
var b1:Byte = Byte.MAX_VALUE //127
var b2:Byte = Byte.MIN_VALUE //-128
/**
 * NaN 不是数字
 */
println(0/0.0)
  • 整数默认为Int,小数默认为double
var a = 12
var b = 12.0
println(a.javaClass) // int
println(b.javaClass) // double
  • Number类型的转换,长短字节Number之间不可隐式转换
    val a:Int = 123
    //编译错误 4字节的Int类型a不能赋值给8字节的Long类型b
//    val b:Long = a
    val b:Long = a.toLong()
    println(b)
    val c:Long = 123333
    //编译错误 8字节的Long类型c不能赋值给4字节的Int类型d
//    val d:Int = c
    val d:Int = c.toInt()
    println(d)
  • 虽然Kotlin中缺乏隐式转换,但在表达式中可以自动转换
val a: Byte = 1
val b: Short = 2
val c = 1.0
val total = a + b
// javaClass属性来自Any类型,是Kotlin所有类型但根父类
println(total.javaClass) // int
val total2 = a.toLong() + b.toByte()
println(total2.javaClass) // long
val total3 = a + b + c
println(total3.javaClass) // double
(5)Char类型 16位
  • Kotlin不支持Char类型和Int类型直接比较(Java支持)
val a = 'a'
// Operator '==' cannot be applied to 'Char' and 'Int'
// println(a == 97)
println(a.toInt() == 97)
// Char两个字节
print(Char.SIZE_BYTES)
  • Kotlin中Char型虽然不能当成整数进行算术运算
  • 但是可以Char型值加、减一个整数值,也可以两个Char相减,但不能相加
val a = 'a'
val b = 'b'
println(a + 2) // c
println(b + 2) // d
println(b - a) // 1
// 报错 
// println(a + b)
(6)String字符串
  • ==:字符串内容是否相等
  • ===:引用是否一样
  • $a
  • """ """:原格式输出
val str:String = "HelloWorld"
val fromChars:String = String(charArrayOf('H','e','l','l','o','W','o','r','l','d'))
println(str == fromChars) //true    == 判断字符串是否一样
println(str === fromChars) //false  ===判断引用是否一样
println("输出"+str) //输出HelloWorld
val a:Int = 5
val b:Int = 6
println("$a + $b = ${a+b}")//字符串模板 5 + 6 = 11
println("\$$a") //$5
println("$$a") //$5
val rawString:String = """
    \t
    \n
    $a
"""
println(rawString) //原来格式输出
println(rawString.length) //字符串长度

转载于:https://www.jianshu.com/p/1913ebd6f626