当前位置:   article > 正文

【Android学习】kotlin编程快速入门_kotlin代码

kotlin代码

目录

1、条件语句&循环语句

2、类的继承、构造、接口

3、数据类&单例类

4、lamada编程

5、空指针检查

6、字符串内嵌表达式、函数参数默认值


1、条件语句&循环语句

  1. package com.example.Chapter2
  2. //if条件语句
  3. //if(条件){满足条件执行的语句}
  4. fun IfLearn(param1:Int,param2:Int):Int{
  5. if(param1 < param2){
  6. return param1
  7. }
  8. else{
  9. return param2
  10. }
  11. }
  12. //when条件语句
  13. //when(变量){匹配值1->{执行逻辑1} 匹配值2->{执行逻辑2}}
  14. fun whenLeran(num:Int){
  15. var n:String = ""
  16. when(num){
  17. 8 -> {n="big"}
  18. 7 -> {n="big"}
  19. 1 -> {n="small"}
  20. 2 -> {n="small"}
  21. else -> {n="NA"}
  22. }
  23. println(n)
  24. }
  25. //for循环语句
  26. fun forLearn(num1:Int,num2:Int){
  27. //升序闭区间序列
  28. println("for i in num1..num2 构造左闭右闭区间")
  29. for (i in num1..num2)
  30. {
  31. println(i)
  32. }
  33. //升序左闭右开区间序列
  34. println("for i in num1 until num2 构造左闭右开区间")
  35. for (i in num1 until num2)
  36. {
  37. println(i)
  38. }
  39. //升序左闭右开区间序列
  40. println("for i in num1 until num2 step num3 构造左闭右开区间")
  41. for (i in num1 until num2 step 2)
  42. {
  43. println(i)
  44. }
  45. //降序左闭右开区间序列
  46. println("for i in num1 downT0 num2降序序列")
  47. for (i in num2 downTo num1)
  48. {
  49. println(i)
  50. }
  51. }
  52. fun main(){
  53. println(IfLearn(1,2))
  54. println(IfLearn(2,0))
  55. whenLeran(1)
  56. whenLeran(9)
  57. forLearn(0,10)
  58. }

2、类的继承、构造、接口

  1. package com.example.Chapter2
  2. //-----------1、类的构造
  3. // 在kotlin钟类默认是不可继承的
  4. //构造一个学生类
  5. open class Stuedent {
  6. //定义学生的属性
  7. var name:String = ""
  8. var age:Int = 0
  9. var weight:Int = 0
  10. var classNum:Int = 0
  11. //定义学生的方法
  12. fun basicMess(){
  13. println(name+" is "+age+" years old,his weight is" + weight + " kg and his classroom is " + classNum)
  14. }
  15. }
  16. //实例化类,即构造一个学生
  17. fun student(name:String,age:Int,weight:Int,classNum:Int){
  18. //实例化类,即构造一个学生
  19. val s1 = Stuedent()
  20. //给类属性赋值,并调用类方法
  21. s1.name = name
  22. s1.age = age
  23. s1.classNum = weight
  24. s1.weight = classNum
  25. s1.basicMess()
  26. }
  27. //---------2、继承,减少代码重复编写,在共同属性的基础上,添加不同子类的差异性,如人都有年龄身高体重,但是不同职业的人有不同的岗位
  28. // 在kotlin钟类默认是不可继承的,需要添加关键字open来定义来是可继承的
  29. //构造大学生类,继承学生类
  30. class collegeStudent(var subject:String,var school:String): Stuedent(){
  31. //通过constructor关键字来实现不同大学生类的参数组合
  32. constructor(name: String,age: Int):this("语文","上海理工大学"){} //组合1:通过this关键字来调用当前类的参数
  33. constructor(name: String):this("英语","上海大学"){}
  34. constructor():this("",""){}
  35. fun printI(){
  36. println(subject + school)
  37. }
  38. }
  39. //实例化大学生类
  40. fun colleageStu(){
  41. val c1 = collegeStudent() //不带参实例化
  42. val c2 = collegeStudent("tim",18)
  43. val c3 = collegeStudent("tom")
  44. c1.printI()
  45. c1.subject = "数学"
  46. c1.school = "交通大学"
  47. c1.printI()
  48. c2.printI()
  49. c3.printI()
  50. }
  51. //----------3、接口,接口可以只定义函数名而不需要定义函数体
  52. //1)定义接口
  53. interface Study{
  54. fun readbook()
  55. fun doHomeWork()
  56. fun goschool(){
  57. println("带函数体的接口方法,不需要强制定义函数,未定义时默认运行此语句")
  58. }
  59. }
  60. //2)让类继承实现多个接口
  61. class coll(subj:String): Stuedent(), Study {
  62. //利用override重写接口方法
  63. override fun readbook() {
  64. println("readbook")
  65. }
  66. override fun doHomeWork() {
  67. println("dohomework")
  68. }
  69. }
  70. //3)实例化coll类
  71. fun collStu(){
  72. val cc1 = coll("接口学习")
  73. cc1.readbook()
  74. cc1.goschool()
  75. }
  76. fun main(){
  77. //实例化类并调用方法
  78. student("Tom",18,70,2)
  79. //继承
  80. colleageStu()
  81. //接口
  82. collStu()
  83. }
  84. //可修饰性学习,在fun关键字前面加上对应可修饰性关键字即可
  85. //private:只对当前类可见
  86. //protected:仅对当前类和子类可见
  87. //public:公开
  88. //internal:只对同一模块可见

3、数据类&单例类

  1. package com.example.Chapter2
  2. //数据类和单例类学习
  3. //数据类,关键字:data
  4. data class cell(val sub:String)
  5. val c1 = cell("c1")
  6. val c2 = cell("c2")
  7. //单例类,关键字:object
  8. //主要用于希望一个类只有一个实例的情况
  9. object Singleton{
  10. fun printl() {
  11. println("单例类")
  12. }
  13. }
  14. //引用
  15. fun main(){
  16. println(c1 == c2)
  17. //单例类
  18. Singleton.printl()
  19. val s1 = Singleton
  20. Singleton.printl()
  21. val s2 = Singleton
  22. Singleton.printl()
  23. }

4、lamada编程

  1. package com.example.Chapter2
  2. //1、常见数据结构
  3. //1)列表:有序集合,listof()---不可变有序列表,mutablelistof()---可变有序列表
  4. fun listLearn(){
  5. println("list数据结构学习")
  6. val list1 = listOf<String>("a","b","c")
  7. for (l in list1){
  8. println(l)
  9. }
  10. val list2 = mutableListOf<String>("a","b","c")
  11. list2.add("d")
  12. for (l2 in list2){
  13. println(l2)
  14. }
  15. }
  16. //2)集合:无序集合,setof()---不可变集合,mutablesetof()---可变集合
  17. fun setLearn(){
  18. println("set数据结构学习")
  19. val set1 = setOf<String>("a","b","c")
  20. for (s in set1){
  21. println(s)
  22. }
  23. val set2 = mutableSetOf<String>("a","b","c")
  24. set2.add("d")
  25. for (s2 in set2){
  26. println(s2)
  27. }
  28. }
  29. //3)字典:无序字典,mapof()---不可变集合,mutablemapof()---可变集合
  30. fun mapLearn(){
  31. println("map数据结构学习")
  32. val map1 = mapOf<String,Int>("a" to 1,"b" to 2,"c" to 3)
  33. for (m in map1){
  34. println(m)
  35. }
  36. val map2 = mutableMapOf<String,Int>("a" to 1,"b" to 2,"c" to 3)
  37. map2.put("d", 4)
  38. for (m2 in map2){
  39. println(m2)
  40. }
  41. }
  42. //2、集合式的API
  43. //1)maxby()---取一个集合的最大值
  44. //2)map()---将集合每一个元素按照规则映射成另一个元素
  45. //3)filter()---将集合中符合条件的元素筛选出来
  46. //4)any()---判断集合中是否至少存在一个符合条件的元素,是返回true,否返回false
  47. //5)all()---判断集合中是否所有元素都符合条件,是返回true,否返回false
  48. fun apiLearn(){
  49. val list3 = listOf<String>("ab","bcs","cdff")
  50. val maxLength = list3.maxBy { l3->l3.length }
  51. val maxLength2 = list3.maxBy { it.length } //只有一个参数,所以可以用It关键字来代替
  52. println("maxLength:"+maxLength)
  53. println("maxLength2:"+maxLength2)
  54. val mapEle = list3.map { l3->l3.uppercase() }
  55. val mapEle2 = list3.map { it.uppercase() }
  56. println("mapEle:"+mapEle)
  57. println("mapEle2:"+mapEle2)
  58. val filterEle = list3.filter { l3 -> l3.length <= 3 }
  59. val filterEle2 = list3.filter { it.length <= 3 }
  60. println("filterEle:"+filterEle)
  61. println("filterEle2:"+filterEle2)
  62. val anyEle = list3.any { l3 -> l3.length > 5 }
  63. val anyEle2 = list3.any { l3 -> l3.length < 5 }
  64. val anyEle3 = list3.any { it.length < 5 }
  65. println("anyEle:"+anyEle)
  66. println("anyEle2:"+anyEle2)
  67. println("anyEle3:"+anyEle3)
  68. val allEle = list3.all { l3 -> l3.length > 5 }
  69. val allEle2 = list3.all { l3 -> l3.length < 5 }
  70. val allEle3 = list3.all { it.length < 5 }
  71. println("allEle:"+allEle)
  72. println("allEle2:"+allEle2)
  73. println("allEle3:"+allEle3)
  74. }
  75. fun main(){
  76. //1、数据结构学习
  77. listLearn()
  78. setLearn()
  79. mapLearn()
  80. //2、集合式API
  81. apiLearn()
  82. }

5、空指针检查

  1. package com.example.Chapter2
  2. //kotlin默认是传入函数的参数和变量不可以为空,在编译前期实现了空指针的检查
  3. //1、可空类型系统:在数据类名后加问号,表示参数可空,如Int为不可空整型,Int?为可空整型
  4. fun nullLearn(l1:Int,l2:Int?){
  5. //l1:不可空参数,l2:可空参数
  6. if (l2 != null){ //进行空指针检查,避免出现空指针异常
  7. println("l1+l2="+(l1+l2))
  8. }
  9. else {
  10. println("l2为空")
  11. }
  12. }
  13. //2、判空辅助工具
  14. //1)?.工具:如果变量不为空则运行,否则跳过
  15. fun wenhaoDot(l1:String?){
  16. val l2 = l1?.length
  17. println(l2)
  18. }
  19. //2)?:工具。如果变量不为空,执行左边表达式,否则执行右边表达式
  20. fun wenhaoMao(l1:String?){
  21. val l3 = l1?:0
  22. println(l3)
  23. val l4 = l1?.length?:-1
  24. println(l4)
  25. }
  26. //3)!!强制通过判空,具有一定风险
  27. fun tanhao(l1:String?){
  28. println(l1!!.length) //这个其实是错误的,因为未解决为空的风险
  29. }
  30. //4)let函数API,可以对全局变量进行判断
  31. var ll:String? = "content"
  32. fun letLearn(){
  33. // if (ll != null) {
  34. // println(ll.length) //这里会提示为空的风险,因为if 无法对全局变量进行判空操作
  35. // }
  36. println(ll?.length)
  37. println(ll?.let{ lll->
  38. lll.length
  39. })
  40. println(ll?.let{ lll->lll.length?:lll
  41. })
  42. }
  43. fun main(){
  44. nullLearn(1,2)
  45. nullLearn(1,null)
  46. wenhaoDot(null)
  47. wenhaoDot("非空")
  48. wenhaoMao(null)
  49. wenhaoMao("非空")
  50. tanhao("非空")
  51. // tanhao(null) //这个运行是会报错的,因为null无length属性
  52. letLearn()
  53. }

6、字符串内嵌表达式、函数参数默认值

  1. package com.example.Chapter2
  2. //通过${}来内嵌变量到一个完整的字符串句子中,只有一个变量时,大括号可以删除
  3. fun stringPad(){
  4. val num = 2
  5. val string = "null"
  6. println("test ${num} $string")
  7. }
  8. fun main(){
  9. stringPad()
  10. }
  1. package com.example.Chapter2
  2. fun functionParams(num:Int = 2,string:String){
  3. println("$num $string")
  4. }
  5. fun main(){
  6. functionParams(1,"iii")
  7. functionParams(string = "hello")
  8. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/761991
推荐阅读
相关标签
  

闽ICP备14008679号