学习内容
1.Int类型
2.Array的声明与遍历
3.关于null
4.特殊类型
5.is ,as
package day1
fun main(args:Array<String>){
testIntType()
testArray()
println(testStrLength(null))//0
println(testStrLength("abc"))//3
println(testStrLength2(null))//0
println(testStrLength2("abc"))//3
testNull()
testUnit()
testIs()
testAS()
}
/**
* as 类型转换
*/
open class Foo
class Goo:Foo()
fun testAS(){
val f = Foo()
val g = Goo()
println(g as Foo)
}
/**
* is 运算
*/
fun testIs() {
val len = testLen("abc")
println(len)
println(testLen('X'))
println(testLen(false))
}
fun testLen(ani:Any):Int{
if(ani is String) {
return ani.length
} else if (ani is Char) {
return 1
} else if (ani is Boolean) {
return 2
} else if (ani is Number) {
return 3
}
println("ani is nothing")
return -1
}
/**
* Unit类型,功能与Java中的void一样
* 可以省略,返回值类型是Unit
* Nothing类型表达式的计算结果永远不会返回
* 与Java中的void一样
* Nothing?唯一允许的值是null
*
* Any是非空类型层次结构的根
* Any?是可空类型层次结构的根
* Any?是Any的超集,是kotlin类层次结构的最顶层
*
*/
fun testUnit():Unit{
println("Hello Unit")
val na:Nothing? = null
}
/**
* 关于null
* null的类型是Nothing?
*/
fun testNull(){
//val s:String = null,报错,string不能为null
val s:String? = null
println(s) //null
// s!!.length; !!非空断言操作符,可以是空类型对象调用成员方法,
// 但是遇到null时会抛出空指针异常//
println(null==null)//true
println(null is Any)//false
println(null!=null)//false
println(null is Any?) //true
val ss:String? = "abc"
//ss.length;编译报错,需要使用安全调用符
val len = ss?.length;
println(len)
}
/**
* ?. 安全调用符
* ?: Elvis运算符
*/
fun testStrLength(s:String?):Int {
return s?.length ?: 0;
}
fun testStrLength2(s:String?):Int=s?.length ?: 0
/**
* 数组等声明与遍历
*/
fun testArray(){
val square = Array(5,{i -> i*i})
square.forEach(::println) //0,1,4,9,16
square.set(0,20)
square.forEach(::println)//20,1,4,9,16
square[0] = 20 //
square.forEach(::println)//20,1,4,9,16
}
/**
* kotlin中的=:赋值
* == : 比较运算,比较的是值,不是引用
* ===:完全一致运算,值和引用都相等才一致
*
*
*/
fun testIntType(){
val a:Int = 1000
val b:Int = 1000
println(a==b)//true
println(a===b)//true
//当变量为Int?可空类型时,变量都值小于128时,两个相同值都变量比较返回true
//变量都值大于等于128时,两个相同值都变量比较返回false,与Java中等Integer类型一样
val c:Int? = 127
val d:Int? = 127
println(c==d)//true
println(c===d)//true
val e:Int? = 128
val f:Int? = 128
println(e==f)//true
println(e===f)//false
}