kotlin学习笔记(一)

一、基本类型
    
      (1)数值类型

                  包含byte、short、int、long、float 、double等,   不包含char,char是一个独立的数据类型。

                  不能隐式将较小的类型转换为较大的类型。                   

    (2)字符
    
                和 Java 不一样,Kotlin 中的 Char 不能直接和数字操作,Char 必需是单引号'包含起来的。

    (3)布尔
    
                 包含true 和false。

      (4)数组
   
val arrayOfInt: IntArray = intArrayOf(1, 2, 3, 4, 5)
val arrayOfChat: CharArray = charArrayOf('a', 'b')
val arrayOfString: Array<String> = arrayOf("我", "是", "flexible")

fun main(args: Array<String>) {
    println(arrayOfInt.size)
    for (i in arrayOfChat) {
        print(i)
    }
    println(arrayOfInt[0])
    println(arrayOfChat.joinToString(""))
    println(arrayOfInt.slice(0..3))
}

       (5)字符串

           和java一样 ,不可变。

           
  可使用 """   ,支持多行字符串,通过trimMargin()去除空格

   val  rawString:String ="""      

        $int1
        $ int1
    """.trimMargin()


        字符串可以包含模板表达式,以美元符号($)开头,后可接名字,也可接花括号

括起来的表达式。

        ==相当于java中的equal,===相当于java中的==

二、空指针安全机制
       
         kotlin通过在类型后加?来表示变量是否可以为空(String? Int?),在有非空限制的地方,

编译器无法通过,通过!!来表示该变量确定不为空。getName()?:return  表示如果

getName()为空,直接return。

        kotlin通过种种限制基本避免了因为空指针错误而导致的奔溃。

fun main(args: Array<String>) {
    val name:String?= getName()
    println(name?.length)

//    val name:String= getName()?:return
//    println(name)
//    val value:String?="hello world"
//    println(value!!.length)
}


三、对象继承

如果只有一个构造函数,可直接写在类名后。

open class  person (character:String,   looks:String ,  voice:String){
    init {
        println("new 了一个  ${this.javaClass.simpleName}   ta性格$character   长相$looks  声音$voice")
    }
}

class men(character:String,   looks:String ,  voice:String):person(character,looks,voice)

fun main(args: Array<String>) {
  val men=  men("懵","帅","糯")

}
四、Range

..表示为闭区间,until表示右开区间,emlyRange为空区间。

val range :IntRange =0..1024
val unCloseRange: IntRange =0 until 1024
val emplyRange:IntRange =0..-1

fun main(args: Array<String>) {
    println(3 in unCloseRange)
    for (i in range) {
        println("$i,")

    }
}


四、类型强转
可以使用as?进行安全的类型转换。如果转型不成功,它 会返回null。

open class Parent {}

class Child : Parent() {

    fun getName(): String {
        return "xd"
    }
}

fun main(args: Array<String>) {
    val p: Parent = Child()
    if (p is Child) {
        println(p.getName())
    }
    val p1:Parent = Parent()
    val child:Child?=p1 as? Child
    println(child ) //结果为null
}





    

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值