标签:倒序 rop dac view attr obj zhang 操作符 直接
页面跳转 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 转型的时候,可能会经常出现 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"""
标签:倒序 rop dac view attr obj zhang 操作符 直接
原文地址:https://www.cnblogs.com/acg88688/p/10676953.html