android开发:Kotlin入门(一):变量、常量、方法

1.kotlin的变量声明

  var name: String = "字符串"
  var name: String ? = ""
  var age: Int = 0
  val grade :Int = 0

1.在类中声明基本类型变量必须初始化:var 变量名:类型= 初始化值

2.变量类型后面带个问号代表该变量是可空的变量,当我们把一个null对象赋值给该变量时系统会自动帮我们判断空值,防止空异常发生,而java需要我们手动去判断处理。

3.val是不可变的变量,相当于java的final修饰符

2.kotlin的lateinit关键字

kotlin要求声明变量的时候必须初始化,那如果我们声明的是我们的对象怎么办?因为我们的对象是在程序中才会进行初始化

因此kotlin给出了关键词:lateinit
1.作用必须是可读且可写的变量,即用var声明的变量
2.不能声明于可空变量。 不能声明于基本数据类型变量。例:Int、Float、Double等,注意:String类型是可以的。
3.声明后,在使用该变量前必须赋值,不然会抛出UninitializedPropertyAccessException异常。

class FristActivity : AppCompatActivity() {
    var name: String = ""
   lateinit var message:Message
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_frist)
        name = message.name
        Log.e("TAG","$name")
    }
}

像我们运行上面的程序报了个异常:
Caused by: kotlin.UninitializedPropertyAccessException: lateinit property message has not been initialized翻译过来的意思是lateinit修饰的对象尚未初始化。

3.使用字符串模板 ($)

  var name: String = "异常"
  Log.e("TAG","$name")

输出的结果:E/TAG: 异常

4.方法命名

fun test(name: String, age: Int): String {
        Log.e("TAG", "$name")
        Log.e("TAG", "$age")
        return ""
    }

fun 方法名(参数:参数类型,参数:参数类型):返回值类型{
}

4.空值检测

   var str : String? = ""
   str = null
   Log.e("TAG", str?.length.toString())      

上诉代码如果转成java运行肯定报空异常。但是Kotlin却不会,它会输出null。其实是因为Kotlin帮我们做了空值的处理,如果一个变量 : var str : String? = “” 在变量类型后加个问号代表这个变量是可以为空值,我们调用这个变量的时候在变量后面加个问号:str?.length.toString() 当你的变量是空值的时候,系统会自动帮我们处理,因此不会报空指针异常。

我们还可以在方法返回值上做空值判断,它返回的是字符串null

fun whenName() :String? {
        return  null;
    }

你可能感兴趣的:(Kotlin)