话不多说,先放一张图
再上代码:
package 数据类型
val aBoolean:Boolean=true
val mereInt=0b000000011
val anotherInt:Int=0xFF
val maxInt:Int =Int.MAX_VALUE
val minInt:Int =Int.MIN_VALUE
val aLong:Long=13435134124143
val another:Long=1231
val a:Float= Float.MIN_VALUE
val b:Float= Float.MAX_VALUE
val c:Double= Double.MIN_VALUE
val d:Double= Double.MAX_VALUE
val f:Byte= Byte.MIN_VALUE
val g:Byte= Byte.MAX_VALUE
val h:Char='数据类型.getA'
val string:String="Hs"
val fromChars:String= String(charArrayOf('H','s'))
fun main(args: Array<String>) {
println(anotherInt)
println(f)
println(g)
println(h)
println(string == fromChars)
println(string === fromChars)
val arg1:Int=0
val arg2:Int=1
println("$arg1+$arg2=${arg1+arg2}")
val sayHello:String="Hello \"Trump\" \$"
println(sayHello)
val salary:Int=1000
println("$$salary")
val rawString:String="""
\t
\n
"""
println(rawString.length)
}
tips:
(1)val表示常量,var表示变量
(2)==判断值相等,===判断引用相等
说一下数组:
package 数据类型
val arrayOfInt:IntArray= intArrayOf(1,2,3,4)
val arrayOfChar:CharArray = charArrayOf('a','数','s','.','e')
val arrayOfString:Array<String> = arrayOf("我","是","pgg")
val arrayOfClass:Array<Parent> = arrayOf(Child(), Child())
fun main(args: Array<String>) {
println(arrayOfInt.size)
for (int in arrayOfInt){
println(int)
}
println(arrayOfClass[1])
println(arrayOfChar.joinToString(""))
println(arrayOfInt.slice(1..2))
}
除了上面的,kotlin还有一些方便使用的数据类型:
(1)元组:二元,三元(kotlin元组似乎没有python那么复杂)
package 数据类型
fun main(args: Array<String>) {
val t1=Triple(1,2,3)
val t2=Pair(4,5)
print("${t1.first}"+"${t2.first}")
}
(2)区间
package 数据类型
fun main(args: Array<String>) {
val a_z='a'..'z'
val one_100=1..100
val d在其中='d' in a_z
val 三十九在其中=39 in one_100
//range
val 倒计时=10.downTo(0)
val 一百到两百=100.rangeTo(200)
}
上面说的都比较简单,其实和java比较像吧,接下来说的就是java中没有的了,kotlin的空类型安全:
kotlin的空类型安全在我看来,其实也并不是说可以让你的程序不报空指针错误,我觉得是在代码层面上提醒程序员需要注意可能会产生空指针错误,可能再我们平时使用java开发时,并不能将所有的可能会导致空指针异常的代码全部考虑到,并进行判空处理,在kotlin中,对象类型被分为可空和不可空两种类型,比如说:
var s:String="adsada"
s=null
这里会报错,s是非空类型,不可以赋值为null,如果你想的话,可以:
var s:String?="adsada"
s=null
将s置为可空类型,也就是加一个?,这样就不会报错了,并且,如果你想要调用s的方法,也需要加上?,就像这样:
var s:String?="adsada"
s=null
s?.length
?.是安全操作符,如果s不为null,那么就返回s.length,如果s是null,那么就会直接返回null,同时,如果只想对非空的值进行操作,那么可以使用let高阶函数,就像这样:
val listWithNulls: List<String?> = listOf("A", null)
for (item in listWithNulls) {
item?.let { println(it) } // 输出 A 并忽略 null
}
还有一个和java三目运算符有点像的操作符,Elvis 操作符
?: 左侧表达式非空就返回左侧表达式,否则就返回右侧表达式:比如:
val aa:String?="sdasda"
val length = aa?.length ?: -1
那么,介绍完上面的,可能会有疑惑,为什么我说空类型安全避免不了空指针异常呢?因为有强制类型转换!!,他是这么使用的:
val size=aa!!.length
这时如果aa是null的话,就会报空指针异常,所以!!需要慎用