Kotlin基础篇【3】Kotlin基础语法

职度Kotlin图1

使用Android Studio新建项目时可选择Java,同时在右侧勾选Kotlin,或者直接新建Kotlin项目。

1.Kotlin 文件已 .kt 格式结束

过程架构图

2.Kotlin代码输出Textview内容大家可以看到 “fun” “ :” 两个特殊符号

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_kt)
        tv.text="职业渡人"
}

fun 关键字 【声明一个函数】

Kotlin代码用Textview输出view上内容,看起来比Java等语言简单得多,Kotlin中通过fun关键字声明一个函数,onCreate方法是应用程序的入口,相比java实现少 写findViewById()

:关键符号【继承,实现】

需要注意的是Kotlin的变量名通常写在类型的前面,中间用冒号分开

变量和数据类型

var【变量】
val 【常量】

Kotlin变量分为var(可变变量)和val(只读变量,也称不可变变量、运行期常量),其中var是可写的,在它的生命周期中可以被多次赋值,如上述代码中的a和e;而val是只读的,它是在运行时初始化的,但仅能赋值一次,如对d重新赋值会发生编译错误,只读变量相当于Java中用final修饰的变量(并不完全相同)。只读变量的值只能被修改一次,并且不能被覆盖,这可以避免变量的值被错误的修改。

ar <标识符> : <类型> = <初始化值>
val <标识符> : <类型> = <初始化值>
val a: Int = 1
val b = 1       // 系统自动推断变量类型为Int
val c: Int      // 如果不在声明时初始化则必须提供变量类型
c = 1           // 明确赋值


var x = 5        // 系统自动推断变量类型为Int
x += 1           // 变量可修改

vararg 【可变长参数函数】

 fun vars(vararg v:Int){
    for(vt in v){
        print(vt)
    }
}

// 测试
fun main(args: Array) {
    vars(1,2,3,4,5)  // 输出12345
}

字符串模板

$ 表示一个变量名或者变量值

$varName 表示变量值

${varName.fun()} 表示变量的方法返回值:
var a = 1
// 模板中的简单名称:
val s1 = "a is $a" 
a = 2
// 模板中的任意表达式:
val s2 = "${s1.replace("is", "was")}, but now is $a"

NULL检查机制

Kotlin的空安全设计对于声明可为空的参数,在使用时要进行空判断处理,有两种处理方式,字段后加!!像Java一样抛出空异常,另一种字段后加?可不做处理返回值为 null或配合?:做空判断处理

//类型后面加?表示可为空
var age: String? = "23" 
//抛出空指针异常
val ages = age!!.toInt()
//不做处理返回 null
val ages1 = age?.toInt()
//age为空返回-1
val ages2 = age?.toInt() ?: -1

当一个引用可能为 null 值时, 对应的类型声明必须明确地标记为可为 null。

当 str 中的字符串内容不是一个整数时, 返回 null:

fun main(args: Array) {
  if (args.size < 2) {
    print("Two integers expected")
    return
  }
  val x = parseInt(args[0])
  val y = parseInt(args[1])
  // 直接使用 `x * y` 会导致错误, 因为它们可能为 null.
  if (x != null && y != null) {
    // 在进行过 null 值检查之后, x 和 y 的类型会被自动转换为非 null 变量
    print(x * y)
  }
}
类型检测转换&自动类型转换【重点】=={要不然项目中坑死你}
fun getStringLength(obj: Any): Int? {
  if (obj is String) {
    // 做过类型判断以后,obj会被系统自动转换为String类型
    return obj.length 
  }


  //在这里还有一种方法,与Java中instanceof不同,使用!is
  // if (obj !is String){
  //   // XXX
  // }


  // 这里的obj仍然是Any类型的引用
  return null
}
还有一种方法转换
fun getStringLength(obj: Any): Int? {
  if (obj !is String)
    return null
  // 在这个分支中, `obj` 的类型会被自动转换为 `String`
  return obj.length
}
fun getStringLength(obj: Any): Int? {
  // 在 `&&` 运算符的右侧, `obj` 的类型会被自动转换为 `String`
  if (obj is String && obj.length > 0)
    return obj.length
  return null
}

Kotlin基础篇【2】初识Kotlin的意义
Kotlin基础篇【3】Kotlin基础语法
=======Kotlin基础篇【4】Kotlin基础语法即将更新=======

你可能感兴趣的:(Kotlin基础篇【3】Kotlin基础语法)