Kotlin基础 (二)

  • 11_kotlin命令行交互式终端
  • 12_kotlin函数加强
    • 函数的本质
    • kotlin函数编写规则
  • 实战编写一个计算器:
  • 作业练习
  • 14_kotlin字符串模版
  • 15_kotlin条件控制if和else
  • 16_kotlin字符串比较
    • Kotlin代码和Java代码不太一样
  • 17_kotlin空值处理
    •   null 值
  • 18_kotlin的when表达式
    •   when
  • 19_kotlin的loop和Range
    • 打印 1 到 100 的值
    • 计算从 1 加到 100
    • 开区间1 到 99
    • step 2 以 2 作为 步长 例如:1 3 5 7
    • 反转数值
    • 集合里面有多少内容
    • 总体的代码
  • 20_kotlin的list和map入门
    • List
    • Map
      • List的Demo
      • Map的Demo

11_kotlin命令行交互式终端

配置环境变量 PATH

Kotlinc :进入命令行
:quit :退出


12_kotlin函数加强

函数的本质

    函数的本质,可以理解是一个或者一组功能的组合.

kotlin函数编写规则



实战编写一个计算器:

fun main(args: Array<String>) {var a = 8var b = 2println("a+b="+plus(a,b))println("a-b="+sub(a,b))println("a*b="+mutl(a,b))println("a/b="+devide(a,b))
}//fun 固定写法  plus 函数名称 (a第一个参数,类型 Int , b第二个参数,类型 Int): Int 返回值是Int类型
// 接收两个参数,方法的返回值是一个Int类型
fun plus(a:Int,b:Int):Int{return a+b
}fun sub(a:Int,b:Int):Int{return a-b
}fun mutl(a:Int,b:Int):Int{return a*b
}fun devide(a:Int,b:Int):Int{return a/b
}


作业练习

fun main(args: Array<String>) {var result = sayHello("张三")println(result)println(checkAge(28))saveLog(3)
}// 请编写函数,函数名为 sayHello
// 方法返回值是 String 类型,一个参数是 String 类型 名称为 name
fun sayHello(name:String):String{return "Hello" + name
}// 请编写函数,函数名为 checkAge
// 方法的返回值是 Boolean 类型,一个参数是整数类型 名称为 age
fun checkAge(age:Int):Boolean{if (age >18)return trueelsereturn false
}// 请编写函数,函数名为 saveLog
// 方法没有返回值,一个参数是整数类型 名称为 logLevel
fun saveLog(logLevel:Int){}

14_kotlin字符串模版

   字符串模版:${} 为字符串模板(转义字符),用一个占位符

// 日记生成器,接收参数是地点,返回值是日记的内容
// ${} 为字符串模板(转义字符),用一个占位符
// ${placeName} 通过这个字符串模板 进行字符串的改变(动态的替换内容)fun diaryGenerater(placeName:String):String{var temple = """今天天气晴朗,万里无云,我们去${placeName}游玩,首先映入眼帘的是,${placeName}${placeName.length}个镏金大字。"""return temple
}fun main(args: Array<String>) {var diary = diaryGenerater("人民公园")println(diary)var diary1 = diaryGenerater("珠海海滨公园")println(diary1)
}

15_kotlin条件控制if和else

// 返回两个数当中较大的那个
fun returnBig(a:Int,b:Int):Int{if (a>b)return aelsereturn b
}fun main(args: Array<String>) {var a = 3var b = 5println("${a}和${b}较大的那个数的值为:${returnBig(a,b)}")
}

16_kotlin字符串比较

// 一个等号(=)是赋值的意思,把等号右边的内容赋值给左边的变量
// 二个等号(=)是判断两个字符串是否相等fun main(args: Array<String>) {var str1 = "张三"var str2 = "张二"println(str1 == str2)
}

上面代码打印出来为 false

把str2改为"张三"
// 一个等号(=)是赋值的意思,把等号右边的内容赋值给左边的变量
// 二个等号(=)是判断两个字符串是否相等fun main(args: Array<String>) {var str1 = "张三"var str2 = "张三"println(str1 == str2)
}

上面代码打印出来为 true

Kotlin代码和Java代码不太一样

  Java代码如果用两个等号==),它代表的是比较内存地址是否相同

  Kotlin代码如果用两个等号==),它等价于Java里面的.equals()方法

  println(str1 == str2) 和 println(str1.equals(str2)) 是一样的

// 有区分大小写之分

fun main(args: Array<String>) {var str3 = "Andy"var str4 = "andy"// 有区分大小写之分
println(str3 == str4)
println(str3.equals(str4))}

上面代码输出为 false、false
因为 有 大小写区分

不区分大小写

// 一个等号(=)是赋值的意思,把等号右边的内容赋值给左边的变量
// 二个等号(=)是判断两个字符串是否相等fun main(args: Array<String>) {var str1 = "张三"var str2 = "张三"var str3 = "Andy"var str4 = "andy"println(str1 == str2)println(str1.equals(str2))// 有区分大小写之分// Andy 和 andyprintln(str3 == str4)println(str3.equals(str4))// 不区分大小写之分(使用重载的函数)// Andy 和 andy// 第二个参数为 true 代表忽略字母的大小写// 第二个参数为 false 代表不忽略字母的大小写println(str3.equals(str4,true))
}

17_kotlin空值处理

  null 值

    null也是值
    表示没有东西没有数据

如果直接传 null 值的话会直接报错

  在null值处理上kotlin比Java要智能很多,Java会出现空指针异常,Java最常见的空指针异常在kotlin语言语法阶段被完美的避免掉了,因此在heat(null)写null在kotlin语言是不可以的

如果一定要传一个 null 值应该怎么做呢?
  //加上问号代表的是参数可以为空
  在 fun heat(str:String?):String 中的 str:String? 中加上一个问号

//接收一个参数,参数是非空的 string 类型,加上问号代表的是参数可以为空
// 在设计函数的时候如果 (str:String)中没有问号就代表这个数据不可能为空的
fun heat(str:String):String{return "热"+str
}fun main(args: Array<String>) {var result1 = heat("水")println(result1)// 当   (str:String?) 时可以传递 null 参数// null 为传递过去的参数//var result2 = heat(null)//println(result2)
}

18_kotlin的when表达式

  when

    • 给定条件
    • 满足什么条件执行什么任务

Kotlin代码的when表达式和Java代码的switch表达式有相识点,但是比 switch 更加强大、更加方便

// 10分:满分  9分:干的不错  8分:还可以  7分:还需努力  6分:刚好及格  其它(需要加油啦)fun gradeStudent(score:Int){when(score){10 -> println("考了满分,棒棒哒!")9 -> println("干的不错")8 -> println("还可以")7 -> println("还需努力")6 -> println("刚好及格")else -> println("需要加油哦!")}
}
fun main(args: Array<String>) {gradeStudent(10)
}

把数字变成中文数字(例如:1变成“一”)

数字版的代码(${placeName.length} 由这个代码所决定)// 日记生成器,接收参数是地点,返回值是日记的内容
// ${} 为字符串模板(转义字符),用一个占位符
// ${placeName} 通过这个字符串模板 进行字符串的改变(动态的替换内容)fun diaryGenerater(placeName:String):String{var temple = """今天天气晴朗,万里无云,我们去${placeName}游玩,首先映入眼帘的是,${placeName}${placeName.length}个镏金大字。"""return temple
}fun main(args: Array<String>) {var diary = diaryGenerater("人民公园")println(diary)var diary1 = diaryGenerater("珠海海滨公园")println(diary1)
}
中文数字的代码(${numToChinese(placeName.length)} 由这个代码所决定)fun diaryGenerator(placeName:String){var diary = """今天天气晴朗,万里无云,我们去${placeName}游玩,首先映入眼帘的是,${placeName}${numToChinese(placeName.length)}个镏金大字。"""println(diary)
}fun numToChinese(num:Int):String{var result = when(num){1 -> "一"2 -> "二"3 -> "三"4 -> "四"5 -> "五"else -> num.toString()}return result
}fun main(args: Array<String>) {diaryGenerator("珠海海滨公园")
}

19_kotlin的loop和Range

    Loop:循环
    Range:区间 (var nums = 1…100 (从 1 到 100 这个区间))

// 1 到 100 的数字在 kotlin 用下方表达
var nums = 1 … 100

打印 1 到 100 的值

// 计算从 1 加到 100
fun main(args: Array<String>) {// 1 到 100 的数字在 kotlin 用下方表达// 声明了一个数组,内容为 1 到 100var nums = 1 .. 100// 打印 1 到 100 的值for(num in nums){print("${num},")}
}

计算从 1 加到 100

// 计算从 1 加到 100
fun main(args: Array<String>) {// 1 到 100 的数字在 kotlin 用下方表达// 声明了一个数组,内容为 1 到 100 的区间var nums = 1..100var result = 0// 把 nums数组 里的每一个值取出来for (num in nums) {result = result + num}println("结果:${result}")
}

开区间1 到 99

//开区间
fun main(args: Array<String>) {//前闭后开区间  [1,100)      1 到 99var nums = 1 until 100for (num in nums){println(num)}
}

step 2 以 2 作为 步长 例如:1 3 5 7

fun main(args: Array<String>) {var nums2 = 1 .. 16//step 2 以 2 作为 步长 例如:1 3 5 7for (a in nums2 step 2){println(a)}
}

反转数值

// 反转数值
var nums3 = nums2.reversed()
for (a in nums3) {print("数值为:" + a + " ")
}

集合里面有多少内容

// 集合里面有多少内容
println("总数为:" + nums3.count())

总体的代码

//开区间
fun main(args: Array<String>) {// 前闭后开区间  [1,100)      1 到 99var nums = 1 until 100for (num in nums) {print("${num} ,")}println()println()var nums2 = 1..16//step 2 以 2 作为 步长 例如:1 3 5 7for (a in nums2 step 2) {print("数值为:" + a + " ")}println()println()// 反转数值var nums3 = nums2.reversed()for (a in nums3) {print("数值为:" + a + " ")}println()println()// 集合里面有多少内容println("总数为:" + nums3.count())
}

20_kotlin的list和map入门

List

  List就是列表的意思

Map

  Map类似一个词典
    词典有索引
    索引对应了具体的内容

List的Demo

** lists.withIndex() 有下标的方式打印 List**

fun main(args: Array<String>) {// 定义一个Listvar lists = listOf("买蛋糕","买奶茶","买水果","买冰淇淋")// lists.withIndex():按位置去打印 List 里的内容// lists.withIndex() 有下标的方式打印 List// 例如:0 买蛋糕for ((i,e) in lists.withIndex()){println("$i $e")}
}

Map的Demo

import java.util.*fun main(args: Array<String>) {// 声明一个 Mapvar map = TreeMap<String, String>()// 向 Map 里放置东西map["好"] = "good"map["学习"] = "study"map["天"] = "day"map["向上"] = "up"// 如何获取 Map 里面的内容(与赋值是一样的)println(map["好"])}

Kotlin基础 (二)相关推荐

  1. 第一章 kotlin基础知识

    第一章 kotlin基础知识 文章目录 第一章 kotlin基础知识 前言 一.kotlin是什么? 二.kotlin基础知识 1.变量的声明 2.函数定义的几种方式 3.字符串与数字的转换 4.数组 ...

  2. Kotlin基础学习(1)

    Kotlin基础学习(1) 本文主要讲解kotlin的部分基础知识,并不是全部基础. 提示:纯属个人理解,如有理解错误,欢迎留言指正批评. 一.Null检查机制 kotlin对于声明可为空的参数,使用 ...

  3. Kotlin 基础——Map集合详解

    Kotlin基础--Map集合详解 一.声明和创建Map集合 二.使用Map的方法 三.遍历Map四种方式 四.可变的Map Kotlin的Map集合用于保存key-value对,其也被分为可变的和不 ...

  4. Kotlin Bootcamp 自学(2):Kotlin基础

    Kotlin Bootcamp 自学(2):Kotlin基础 目录 Kotlin Bootcamp 自学(2):Kotlin基础 前言 运算符与数据类型 (Operators and Types) 数 ...

  5. Kotlin基础 字符串操作与数字类型转换、标准库函数

    一.字符串操作 1.substring 字符串截取,substring函数支持IntRange类型(表示一个整数范围的类型)的参数,until创建的范围不包括上限值(包前不包后). const val ...

  6. Kotlin 基础——Set集合详解

    Kotlin基础--Set集合详解 一.声明和创建 二.使用Set的方法 三.遍历Set 四.可变的Set 4.1.添加元素 4.2.删除元素 Kotlin的集合类由两个接口派生:Collection ...

  7. Kotlin基础(三)

    Kotlin基础(三) 文章目录 Kotlin基础(三) 3.集合类 3.1 不可变List 3.2 可变集合MutableList 3.3 遍历List元素 3.4 List元素操作函数 3.5 L ...

  8. Kotlin基础语法(上)

    文章目录 Kotlin基础语法(下) Kotlin基础语法(上) 输出Hello world!!! 变量与输出 kotlin常见数据类型 变量的取值范围 kotlin函数 kotlin布尔类型 kot ...

  9. Kotlin Jetpack 实战: Kotlin 基础 | 开发者说·DTalk

    本文原作者: 朱涛,原文发布于: 朱涛的自习室 https://mp.weixin.qq.com/s/MSbSPeWNlM5PJCFmLg2SVQ 背景 近几年,Android 相关的新技术层出不穷. ...

最新文章

  1. java 并发修改_理解和解决Java并发修改异常ConcurrentModificationException
  2. UVA1343 The Rotation Game旋转游戏
  3. 捡起JavaScript(1)
  4. e7用什么主板_主板当中的纽扣电池有什么用?电池没电了会怎样?
  5. 如何合理地决定线程池大小?
  6. Javascript特效:旋转木马轮播图
  7. Android -----paint cap join 理解 ,paint画笔形状设置
  8. wdcp如何修改phpmyadmin导入 最大限制2048 KB
  9. 实现基于SSM开发房屋租赁系统
  10. nvidia-smi详解
  11. Tilera發表100核心處理器
  12. 你真的懂Java怎么输出Hello World吗?
  13. IBM服务器raid5崩溃数据恢复方法
  14. 1024程序员节:最能讨好程序员的12件礼物
  15. 广州种植牙价格是多少
  16. 序列化和反序列化的概念及应用
  17. Camtasia2023最好用的电脑屏幕录制软件
  18. 计算机毕业设计-基于VUE+SpringBoot+MyBatis+MySQL的学生作业管理系统
  19. MIT计算机专业本硕连读几年,麻省理工一般读几年?
  20. qt布局嵌套_Qt的5种常用布局搭建

热门文章

  1. WindTerm 开源的高性能终端模拟器 最酷
  2. GDKOI2016暴力记
  3. shader 反射 水面_shader实例(二十六)水(反射,法线,透明)
  4. Vue路由跳转的几种方式及解释说明
  5. 【代码审计】CLTPHP_v5.5.3前台XML外部实体注入漏洞分析
  6. PowerMockito when 不生效原因
  7. NameNode和SecondaryNameNode详解
  8. flutter 叠加布局Stack,Positioned超出部分显示
  9. 杭州python开发工资_杭州测试转python开发难不难?
  10. 大学网络营销课程精简知识点