kotlin 1

页面跳转  startActivity(Intent(MainActivity@this, SecondActivity::class.java))
 or   startActivity(Intent(this@MainActivity, SecondActivity::class.java))
 or   startActivity(Intent(this, SecondActivity::class.java))
findviewbyid 直接写控件名称

?操作符:

在变量后面加 ? 代表此为可控变量
var name: String? = "zhangsan"

若str无法转为int类型,则返回null
fun parseInt(str:String):Int ?{
}
如果b非空,返回b.length;否则,返回null,此类型为Int ?。
b?.length

?:操作符
如果 ?: 左侧表达式非空,elvis操作符就返回其左侧表达式,否则返回右侧表达式。请注意,当且仅当左侧为空时,才会对右侧表达式求值。
if/else方法:
val l:Int if(b!=null) b.length else -1
Elvis
val l=b?.length ?: -1

 ==与===

==  判断是否相等

===判断是否完全相等

!!

这会返回一个非空的b值,若b为空,则抛出一个空指针异常

val l = b!!.length

.. 闭区间运算符 x到y的闭区间,包含x和y

until 半闭区间运算符,包含x不包含y

in 代表在一个区间内,!in代表不在一个区间内

if(i in 1..10)     如果i在1-10内,包含1,10

for(i in 1 until 10)  如果i在1-10内,不包含10

downTo()函数

for(i in 4 downTo 1){    倒序遍历,输出:4 3 2 1 

println(i)

}

step()函数  迭代函数

for(i in 1..4  step 2){  输出 1 3

print(i)

}

for(i in 4 downTo 1 step 2){  输出 4 2

print(i)

}

::符号   得到类的class对象

startActivity(Intent(MainActivity@this,secondActivity::class.java))

@符号  :

1.限定this的类型

class User {
inner class State{
fun getUser(): User{
//返回User
return this@User
}
fun getState(): State{
//返回State
return this@State
}
}
}
2.作为标签

跳出for循环

loop@ for (itemA in arraysA) {
var i : Int = 0
for (itemB in arraysB) {
i++
if (itemB > 2) {
break@loop
}

println("itemB:$itemB")
}

}

as?操作符

当使用 as 转型的时候,可能会经常出现 ClassCastException

所以用as?,当转型不成功,将返回null

val m : Int? = a  as? Int

 冒号:

用于类的继承以及变量的定义

1.类型和超类型之间的冒号前要有一个空格

2.实例和类型之间的冒号前不要空格

定义全局变量时:

var str: String? = null

类的继承与变量定义

class TestActivity<T : Serializable>(str: String) : Activity{}

类型判断符 is

检查某个实例是否为某个类型,若判断出属于某个类型,那么判断后的分支可直接当某类型使用,无需显式转换

 

fun getStringLength(obj: Any): Int? {
//obj在&&右边自动动转换成"String"类型
if (obj is String && obj.length > 0)
return obj.length
return null
}

多行输入符 三个双引号
    三引号的形式用来输入多行文本,也就是说在三引号之间输入的内容将被原样保留,

之中的单号和双引号不用转义,其中的不      可见字符比如/n和/t都会被保留。

val str = """
one
two
"""
//等价于
val str = "one\ntwo"
val str = "one" +"\n"+"two"

$操作符
    字符串可以包含模板表达式,及一小段代码,会求值并把结果包含到字符串中。模板字符串以美元符号$开头,由一个简单的      名字构成:

val value:Int=5;
val str:String="the value is $value"
println("itemB:$itemB")
//字符串模板
var userInfo = "name:${user.name}, age:$age"
    或花括号括起来的任意表达式
val g:Int=2
val h:Int=3
val str:String="g+h=${g+h}"
    转义字符串和原生字符串都支持模板字符串。如果想要在原生字符串中使用$(它不支持反斜杠转义),可以使用以下语法:
val str:String="""the price is ${'$'}199"""



















猜你喜欢

转载自www.cnblogs.com/acg88688/p/10676953.html