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