7月20日学习总结
总结今天学习内容
跟任何编程语音一样kotlin也拥有着 变量 函数 以及面向对象的语法结构
变量:
Kotlin中的变量有两种: val 和var
val 类似于java 中的final 用val声明的变量只可以被赋值一次
var 就是可以被多次赋值的变量
关于数据类型 kotlin中没有基本数据类型 java中的int double类型在kotlin中都以Int Double 这种对象类型表示
函数:
当函数中只有一行代码时我们可以这样写
fun largerNumber(num1:Int,num2:Int)=max(num1,num2);
流程控制: 顺序语句 ,条件语句 ,循环语句
if语句可以简写为
when语句跟java中的switch语句一样单它远比switch强大的多 switch语句结合is 可以都传递的数据进行类型匹配.
fun checNumber(num:Number){
when(num){
is Int -> println("number is Int")
is Double ->println("number is Double");
else ->prinln("number not support")
}
}
when语句的另一种用法
fun getScore(name: String)=when{
name.startWith("Jack") ->100
name=="Jim"->79
name=="Lily"->96
name=="Tom" ->86
else ->0
}
for-in语句是kotion中特点
fun main(){
for(i in 0..100)
println(i)
}
for..in语句中的until step语句
fun main(){
for(i in 0 until 10 step 2){
println(i)
}
}
上面的代码表示遍历0-9这几个数字并且每次递增2 所以打印出来的值为0,2,4,6,8
for..in中的downTo 表示降序区间
fun main(){
for(i in10 downTo 1){
println(i)
}
}
以上代码打印的结果为10,9,8,7,6,5,4,3,2,1
面向对象编程
我们可以用在数据模型类的前面加上data 这样然后只用生命参数即可构造方法和get,set方法都不需要声明
data class Cellphone(val brand:String,val price:Double)
单例类用object 声明即可
object Singleton{
fun singletionTest(){
println("sinletonTest is called.")
}
}
kotlin在的接口可以有方法体如果我们不去重写这个方法,那么就默认实现接口中的方法体
集合:
listOf可以i创建一个不可改变的集合(集合一旦定义只能遍历不能对其添加修改删除)
listOf("苹果","香蕉","芒果")
mutableListOf 创建一个可以对其增删改查的List集合
fun main(){
val list = mutableListOf("苹果","香蕉","芒果")
list.add("车厘子")
for(fruit in list){
println(fruit)
}
}
setOf 创建一个不可变的set集合(创建后不可对其增删改查只能遍历)
val set = setOf("苹果","香蕉","芒果")
for(fruit in set){
println(fruit)
}
set 集合的数据是无序的
Map集合可以i这样写
val map = HashMap<String,Int>()
map["Apple"]=1
map[Banana]=2
map[Pear]=3
或者这样写
val map = mapOf("Apple"to 1,"Banana"to 2,"Pear" to 3)
当lambda表达式中只有一个参数时可以用it代替
val maxLengthFruit = list.maxBy(it.length)
filter函数表示过滤的意思
val list = listOf("Apple","Banana","Orange","Pear","Grape","Watermelon")
val newList = list.filter{it.length<=5}.map{it.toUpperCase()}
for(fruit in newList){
println(fruit)
}
Kotlin中any函数表示集合中至少有一个元素符合要求时而all函数则表示集合中所有元素都符合要求时
val list = listOf("Apple","Banana","Orange","Pear","Grape","Wataarmelon")
val anyResult = list.any {it.length <=5}
val allResult =list.all{it.lenght<=5}
在多线程中可以这样写
Thread(
println("Thread is running")
).start()
有关空指针检查
类型后面加?表示参数可为空
fun doStudy(study:Study?){
if(study!=null){
study.readBooks()
}
}
Kotlin中判空工具 ?.表示如果当参数不为空是正常调用,当参数为空时不作处理
..!表示程序员信任该参数绝对不为空不需要编译器额外检查
Kotlin中的let语句可以将下面代码
fun doStudy(study:Study?){
study?.readBoos()
study?.doHomework()
}
简写成 fun doStudy(study:Study?){
study?.let{stu ->
stu.readBooks()
stu.doHomework()
}
}
Kotlin中的字符串内联表达式
val brand ="samsung"
val price=1299.99
println("Cellphone(brand=$brand,prince=$prince)")
Kotiln中在创建对象的时候如果不想创建某个参数可以直接给该参数赋值为空.