使用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<String>) {
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<String>) {
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基础语法即将更新=======