导言:
Kotlin:开发Android的官方语言,本文只是笔记
1:方法定义:
//函数-fun,名称-getHidePhoneNum,参数-phoneNum: String,返回-String
fun getHidePhoneNum(phoneNum: String?): String? {
...
return phoneNum
}
//函数-fun,名称-signIn,参数-callback: ICallback, map: Map<String, String>, url: String,返回-void
fun signIn(callback: ICallback, map: Map<String, String>, url: String) {
...
}
2:常量和变量
//val 常量声明
var phoneNum = phoneNum
var flag = false
//var 变量声明
val timeStampSec = System.currentTimeMillis()
val length = phoneNum.length
//没有new关键字
var mSigninBean = SigninBean()
3: ?,:,@,in,"""",trimMargin()
//?,使用可空值,并检查是否null,用?
//:,常量变量类型声明、函数返回类型、类的继承都需要使用冒号
var name: String? = null
fun getHidePhoneNum(phoneNum: String?): String? {
var phoneNum = phoneNum
try {
if (phoneNum == null) return ""
val length = phoneNum.length
if (length > 4) {
val startNum = phoneNum.substring(0, 3)
val endNum = phoneNum.substring(length - 3, length)
phoneNum = "$startNum*****$endNum"
}
} catch (e: Exception) {
e.printStackTrace()
}
return phoneNum
}
//@,匿名内部类
class Outer {
private val bar: Int = 1
var v = "成员属性"
/**嵌套内部类**/
inner class Inner {
fun foo() = bar // 访问外部类成员
fun innerTest() {
var o = this@Outer //获取外部类的成员变量
println("内部类可以引用外部类的成员,例如:" + o.v)
}
}
}
//in,判断分数是否大于等于90,小于等于100
fun isGood(score: Int) {
if(score in 90..100) //ranges是闭区间
println("very good")
else
println("not so good")
}
//"""",多行字符串
val text = """
多行字符串
多行字符串
"""
// trimMargin()删除空白
val text = """
|多行字符串
|菜鸟教程
|多行字符串
|Runoob
""".trimMargin()
4:类型检查和自动转换
Any==Object
is==instanceof
类型转换时为静态的,所以需要手动转换
fun getStringLength(obj: Any): Int? {
if (obj is String) {
// is 相当于java中的instanceof ,并自动转换为String类型。
return obj.length
}
// obj没进行转换,仍为Any类型
return null
}
//类型转换,需手动
val b: Byte = 1 // OK, 字面值是静态检测的
val i: Int = b.toInt() // OK
5:循环
//for循环
val bytes = mDigest.digest(str.toByteArray())
var result = ""
for (bt in bytes) {
var temp = Integer.toHexString((bt and 0xff.toByte()).toInt())
if (temp.length == 1) {
temp = "0$temp"
}
result += temp
}
return result
//listOf定义集合
val list1= listOf("apple", "banana", "kiwi")
var list2: ArrayList<String> = ArrayList()
list2.add("item1")
list2.add("item2")
//for循环
for (item in list1) {
println(item)
}
//数组
var arr = arrayOf(1, 3, 4, 5, 6)
for(num in arr) { //直接使用数组中的对象循环
println(num)
}
//用while 循环
val list= listOf("apple", "banana", "kiwi")
var index = 0
while (index < list.size) {
println("item at $index is ${list[index]}")
index++
}
//when==switch
when (mKind) {
"diesel" -> fuelType = Constant.FUELTYPE_DIESEL
"petrol" -> fuelType = Constant.FUELTYPE_PETROL
"natural" -> fuelType = Constant.FUELTYPE_NATURAL
"other" -> fuelType = Constant.FUELTYPE_OTHER
}
若有复杂要求,详情这两篇文档
http://www.kotlindoc.cn/,
http://www.runoob.com/kotlin/kotlin-tutorial.html