Kotlin基础 (二)
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基础 (二)相关推荐
- 第一章 kotlin基础知识
第一章 kotlin基础知识 文章目录 第一章 kotlin基础知识 前言 一.kotlin是什么? 二.kotlin基础知识 1.变量的声明 2.函数定义的几种方式 3.字符串与数字的转换 4.数组 ...
- Kotlin基础学习(1)
Kotlin基础学习(1) 本文主要讲解kotlin的部分基础知识,并不是全部基础. 提示:纯属个人理解,如有理解错误,欢迎留言指正批评. 一.Null检查机制 kotlin对于声明可为空的参数,使用 ...
- Kotlin 基础——Map集合详解
Kotlin基础--Map集合详解 一.声明和创建Map集合 二.使用Map的方法 三.遍历Map四种方式 四.可变的Map Kotlin的Map集合用于保存key-value对,其也被分为可变的和不 ...
- Kotlin Bootcamp 自学(2):Kotlin基础
Kotlin Bootcamp 自学(2):Kotlin基础 目录 Kotlin Bootcamp 自学(2):Kotlin基础 前言 运算符与数据类型 (Operators and Types) 数 ...
- Kotlin基础 字符串操作与数字类型转换、标准库函数
一.字符串操作 1.substring 字符串截取,substring函数支持IntRange类型(表示一个整数范围的类型)的参数,until创建的范围不包括上限值(包前不包后). const val ...
- Kotlin 基础——Set集合详解
Kotlin基础--Set集合详解 一.声明和创建 二.使用Set的方法 三.遍历Set 四.可变的Set 4.1.添加元素 4.2.删除元素 Kotlin的集合类由两个接口派生:Collection ...
- Kotlin基础(三)
Kotlin基础(三) 文章目录 Kotlin基础(三) 3.集合类 3.1 不可变List 3.2 可变集合MutableList 3.3 遍历List元素 3.4 List元素操作函数 3.5 L ...
- Kotlin基础语法(上)
文章目录 Kotlin基础语法(下) Kotlin基础语法(上) 输出Hello world!!! 变量与输出 kotlin常见数据类型 变量的取值范围 kotlin函数 kotlin布尔类型 kot ...
- Kotlin Jetpack 实战: Kotlin 基础 | 开发者说·DTalk
本文原作者: 朱涛,原文发布于: 朱涛的自习室 https://mp.weixin.qq.com/s/MSbSPeWNlM5PJCFmLg2SVQ 背景 近几年,Android 相关的新技术层出不穷. ...
最新文章
- java 并发修改_理解和解决Java并发修改异常ConcurrentModificationException
- UVA1343 The Rotation Game旋转游戏
- 捡起JavaScript(1)
- e7用什么主板_主板当中的纽扣电池有什么用?电池没电了会怎样?
- 如何合理地决定线程池大小?
- Javascript特效:旋转木马轮播图
- Android -----paint cap join 理解 ,paint画笔形状设置
- wdcp如何修改phpmyadmin导入 最大限制2048 KB
- 实现基于SSM开发房屋租赁系统
- nvidia-smi详解
- Tilera發表100核心處理器
- 你真的懂Java怎么输出Hello World吗?
- IBM服务器raid5崩溃数据恢复方法
- 1024程序员节:最能讨好程序员的12件礼物
- 广州种植牙价格是多少
- 序列化和反序列化的概念及应用
- Camtasia2023最好用的电脑屏幕录制软件
- 计算机毕业设计-基于VUE+SpringBoot+MyBatis+MySQL的学生作业管理系统
- MIT计算机专业本硕连读几年,麻省理工一般读几年?
- qt布局嵌套_Qt的5种常用布局搭建
热门文章
- WindTerm 开源的高性能终端模拟器 最酷
- GDKOI2016暴力记
- shader 反射 水面_shader实例(二十六)水(反射,法线,透明)
- Vue路由跳转的几种方式及解释说明
- 【代码审计】CLTPHP_v5.5.3前台XML外部实体注入漏洞分析
- PowerMockito when 不生效原因
- NameNode和SecondaryNameNode详解
- flutter 叠加布局Stack,Positioned超出部分显示
- 杭州python开发工资_杭州测试转python开发难不难?
- 大学网络营销课程精简知识点