自学kotlin 笔记 基础一

222 阅读3分钟

/**

  • kotlin 类的定义:《Any》 类是所有类的父类

  • 注意:kotlin基本类型是 引用数据类型 继承类Nunber类型 所以可以调用方法,访问属性。

  • 类定义规则:class +类名 常用修饰符有 public,private,protected,abstract, open:这个修饰符表示该类可以派生子类,类成员可以被重写。

  • 类的继承规则:class +类名 +:继承类名 ()

  • 举例:如下

  • class MainActivity : AppCompatActivity() {} ➡ kotlin语言中类如果没有属性和函数 ,{}大括号可以省略不写!

  • / class MainActivity : AppCompatActivity() { /* *

    • 1。声明的val 变量不能被重新赋值 一旦赋值不可改变 相当于常量
    • 举例:
    •  错误事例
      
    •  val mString="helloWorld"
      
    •   此时 mString="hello" :使用 val 修饰的变量不可变变量,不能重新赋值
      
    • 2。声明的var 变量是可被多次赋值
    • 3。声明变量的规则:val/ var +变量名+:变量类型 + =初始值
    • 4。声明的变量 可以隐式指定类型 例如:var ontherString="helloWorld" 没有显示的指定类型,编译器根据赋值决定其类型。
      1. kotlin 是 null 安全语言 因此 Byte,Short, Int , Long 正常情况下不能接受null值,如果要储存null值 则应该使用
    • Byte?,Short?,Int?,Long? 类型 就可以。
      
    • 举例:var a:Int=null 是不可以的赋值错误的。正确:var a:Int?=null 就可以。
    • 原因:后缀添加上 ? 相当于原有类型进行类扩展可以支持被赋值null值,整数类型后缀? 重要的原因:不带? 会映射为java基本数据类型
    • 带?会映射为java的包装类 类型 所以相同的数值加?比较结果不相等
    • kotlin中 注意: "==" 表示的是equals 比较值/ "===" 表示 ==比较的是对象
    • */

    //显示指定数据类型 val isFlag: Boolean = false

    //隐式指定 val isTag = true

    val aByte:Byte=127 val bByte=-128

    val aShort:Short=123

    val type: Int = 2 val aInt: Int = 0xFF val maxInt: Int = Int.MAX_VALUE val minInt: Int = Int.MIN_VALUE

    val aLong: Long = 1234567890001111 val anonther: Long = 124L val maxLong: Long = Long.MAX_VALUE val minLong: Long = Long.MIN_VALUE

    val maxFloat: Float = Float.MAX_VALUE val minFloat: Float = -Float.MAX_VALUE

    val num: Double = 12.34

    val page: Float = 12.3F

    val aString: String = "helloWorld" val bString: String = String(charArrayOf('h', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd')) val name = "aaa"

    /**

    • 基本类型转换 不可以隐式转换必须调用:toLong(),toInt() 等等方法。

    */

    val mlong:Long=type.toLong() val mInt: Int=aLong.toInt()

    fun getmName():String?{ return "你好" }

    override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) text_add.text = add(1, 3).toString() text_add.text = multiplication(2, 5).toString() text_add.text = (aString == bString).toString() text_add.text=getString("1","2","3") subtraction(2,8)

     /**
      *
      * 非空判断 执行 事例
      * 如果为空 执行return,不为空执行下一行语句
      * */
    
     val myName:String=getmName()?:return
     text_add.text=myName
     /**
      * 双!! 号
      *  表示 确定不是空类型
      */
     text_add.text=getmName()!!.length.toString()
    
     /**
      * 类型转换异常问题kotlin
      * 判断之后不用在强制转换
      * */
     //第一种
      var parent:Parent=Child()
      if(parent is Child){
          text_add.text=parent.getmName()
      }
     //第二种
      val mParent= Parent()
      // as 表示 如果类型转换失败 不可抛出异常,返回null
      val mChild :Child?=mParent as Child
    
      text_add.text=mChild.toString()
    

    }

    /**

    • 重写父类的方法
    • */ override fun equals(other: Any?): Boolean { return super.equals(other)

    }

    /** *

    • kotlin 方法结构规则 fun +方法名+(无参/有参)+:返回值类型+{}

    • */ //带返回值 fun add(a: Int, b: Int): Int {

      return a + b } // kotlin Toast方法使用 fun subtraction(a:Int,b:Int): Toast { return Toast.makeText(this,(a-b).toString(),Toast.LENGTH_SHORT).apply { show() } }

    /** *

    • 求乘方法
    • */ fun multiplication(a: Int, b: Int): Int { return a * b }

    /** *

    • kotlin 字符串模版特性
    • */ fun getString(a:String,b:String,c:String): String{ return "a+b+c={a+b+c}"

    }

}