一、Boolean类型
Boolean类型没什么好说,无非就是两个值:true和false,为什么要单独拿出来说呢,主要是和Number数据类型做区分。我们就用程序简单输出一下boolean变量的值
fun main(args: Array<String>) {
val b1:Boolean = true
val b2:Boolean = false
println("b1的值:$b1 b2的值:$b2")
}
初次接触Kotlin的话,可能对上面的代码既陌生又熟悉,和Java很像但是又不同。我简单介绍的说一下:
(1)上面的方法其实和Java中的Main方法是一个意思,参数也是一个字符串数据类型
(2)val这个关键字是变量的声明,之后的博客我会详细介绍这个关键字,b1和b2是变量的名称,而Boolean是变量的类型,true和false就是变量的值
(3)println是打印函数,快捷键和Java一样是sout
(4)$符号的作用是输出变量的值
所以上述代码输出如下
b1的值:true b2的值:false
一般情况下,Kotlin中的Boolean相当于Java中基本数据类型boolean,至于在必要的情况的下话,才会装箱成Boolean。我们无需关心到底使用哪种类型,因为Kotlin的编译器会帮我们做决定
二、Number数据类型
分类 | 类型 | 位宽 |
浮点型 | Double | 64 |
Float | 32 | |
整型 | Long | 64 |
Int | 32 | |
Short | 16 | |
字节 | Byte | 8 |
上表中就是Number数据类型的信息,其实大家应该也都很熟悉了。下面我就用代码来输出一下各类型相关的值
(1)整型Int,长整型Long和短整型Short
//整型
val i:Int = 8
val i_16:Int = 0xFF
val i_2:Int = 0b0000_0011
val max_int:Int = Int.MAX_VALUE
val min_int:Int = Int.MIN_VALUE
//长整型
val l:Long=123
val l_max:Long=Long.MAX_VALUE
val l_min:Long=Long.MIN_VALUE
//短整型
val s:Short=12
val s_max:Short=Short.MAX_VALUE
val s_min:Short=Short.MIN_VALUE
fun main(args: Array<String>) {
println("----------整型变量打印----------")
println("i的值:$i")
println("i的十六进制表达:$i_16")
println("i的二进制表达:$i_2")
println("整型的最大值:$max_int")
println("整型的最小值:$min_int")
println("----------长整型变量打印----------")
println("l的值:$l")
println("让普通整型变成长整型:"+123L)
println("Long的最大值:$l_max")
println("Long的最小值:$l_min")
println("----------短整型变量打印----------")
println("s的值:$s")
println("Short的最大值:$s_max")
println("Short的最小值:$s_min")
}
输出如下:
----------整型变量打印----------
i的值:8
i的十六进制表达:255
i的二进制表达:3
整型的最大值:2147483647
整型的最小值:-2147483648
----------长整型变量打印----------
l的值:123
让普通整型变成长整型:123
Long的最大值:9223372036854775807
Long的最小值:-9223372036854775808
----------短整型变量打印----------
s的值:12
Short的最大值:32767
Short的最小值:-32768
需要注意的是,让普通整型数据变成长整型数据,只需要在变量后面加一个L即可
(2)浮点型Float和双精度浮点型Double
//浮点型
val f1:Float=10f
val f2:Float=1E3f//表示10的三次方
val positive_f_max:Float = Float.MAX_VALUE
val positive_f_min:Float = Float.MIN_VALUE
val minus_f_max:Float = -Float.MIN_VALUE
val minus_f_min:Float = -Float.MAX_VALUE
//双精度
val d:Double=10.0
val positive_d_max:Double = Double.MAX_VALUE
val positive_d_min:Double = Double.MIN_VALUE
val minus_d_max:Double = -Double.MIN_VALUE
val minus_d_min:Double = -Double.MAX_VALUE
//双精度浮点型
fun main(args: Array<String>) {
println("----------浮点型打印----------")
println("f1的值:$f1")
println("f2的值:$f2")
println("Float最大正数值:$positive_f_max")
println("Float最小正数值:$positive_f_min")
println("Float最大负数值:$minus_f_min")
println("Float最小负数值:$minus_f_max")
println("----------双精度浮点型打印----------")
println("d的值:$d")
println("Double最大正数值:$positive_d_max")
println("Double最小正数值:$positive_d_min")
println("Double最大负数值:$minus_d_min")
println("Double最小负数值:$minus_d_max")
}
输出如下
----------浮点型打印----------
f1的值:10.0
f2的值:1000.0
Float最大正数值:3.4028235E38
Float最小正数值:1.4E-45
Float最大负数值:-3.4028235E38
Float最小负数值:-1.4E-45
----------双精度浮点型打印----------
d的值:10.0
Double最大正数值:1.7976931348623157E308
Double最小正数值:4.9E-324
Double最大负数值:-1.7976931348623157E308
Double最小负数值:-4.9E-324
需要注意的是浮点型和双精度浮点型的区别在于:浮点型数据后有一个F
(3)字节类型Byte
val b:Byte=12
val b_max:Byte=Byte.MAX_VALUE
val b_min:Byte=Byte.MIN_VALUE
fun main(args: Array<String>) {
println("b的值:$b")
println("Byte的最大值:$b_max")
println("Byte的最小值:$b_min")
}
输出如下,字节类型没什么好说
b的值:12
Byte的最大值:127
Byte的最小值:-128
三、拆箱装箱与Char数据类型
关于拆箱装箱的问题在介绍Boolean的时候已经说过了,具体的装箱和拆箱的操作Kotlin编译器会帮我们自动去做,我这里就不再赘述了
下面我们来说一下Char类型,我们用一段代码输出一下
val c1:Char ='0'
val c2:Char = '中'
val c3:Char = '\u0fff'
fun main(args: Array<String>) {
println("c1的值:$c1")
println("c2的值:$c2")
println("c3的值:$c3")
}
输出如下:
c1的值:0
c2的值:中
c3的值:
字符的表达有一对单引号''表示,c3变量表示Unicode字符,输出是一个乱码
除了上述普通的字符还有一类字符需要我们注意,就是转义字符
转义字符 | 含义 |
\t | 制表符 |
\b | 光标后退一个字符 |
\n | 回车 |
\r | 光标回到行首 |
\' | 单引号 |
\" | 双引号 |
\\ | 反斜杠 |
\$ | 美元符号,Kotlin支持美元 符号开头的字符串模板 |
四、基础数据类型转换与字符串
基础数据类型转换
Kotlin不支持隐式转换,这个是和Java不一样的地方。在Java中,int类型的变量可以直接赋值给long类型的变量,而Kotlin却不行。那怎么办呢,看如下代码,需要调用一下toLong方法才可以。Float和Double之间的转换也是一样。
val i:Int = 5
val l:Long = i.toLong()
字符串
Kotlin中字符串有多种赋值方式,如下
val s1:String="gzc"
val s2:String = String(charArrayOf('g','z','c'))
s1和s2的输出是一样的,都会输出gzc这个字符串,那字符串之间的该如何比较呢,如下
val s1:String="gzc"
val s2:String = String(charArrayOf('g','z','c'))
fun main(args: Array<String>) {
println(s1== s2)//输出true
println(s1=== s2)//输出false
}
代码中的注释为输出结果,s1==s2和Java中的结果完全不一样,正好相反。在Kotlin中==表示值的比较,而三个等号===才是引用对象的比较
字符串还有一个表达形式,那就是三对双引号,例如"""gzc"""。这样表达的字符串是原始字符串的意思,其中除了\$以外,其他的转义符号在字符串都会以原始字符串出现,如下
fun main(args: Array<String>) {
val salary:String="100000"
val s:String="""
\t \n \$salary
"""
println(s)
}
输出如下
\t \n \100000
我们如果在字符串后添加trimIndent方法,输出又会不同
fun main(args: Array<String>) {
val salary:String="100000"
val s:String="""
\t \n \$salary
""".trimIndent()
println(s)
}
输出
\t \n \100000
trimIndent的作用不言而喻
关于Kotlin数据类型的第一节就介绍完了,之后还有第二节
欢迎提问!欢迎纠错!