前言
Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源。
Kotlin 可以编译成Java字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。
在Google I/O 2017中,Google 宣布 Kotlin 成为 Android 官方开发语言。
kotlin 走全栈语言之路
各个语言的精华聚集一身的新时代语言
kotlin的优势
1. 全面支持Lambda表达式
2. 数据类(Data Class)
3. 函数字面量和内联函数
4. 函数拓展
5. 空安全
6. 智能转换
7. 字符串模板
8. 主构造函数
9. 类委托
10. 类型判断
11. 单例
12. 声明点变量
13. 区间表达式
kotlin语言的跨平台性
kotlin跨平台不仅可以通过JVM实现跨平台,还可以通过二进制实现跨平台
kotlin语言声明变量以及内置数据类型
fun main(args: Array<String>) {
println("Hello World!")
//TODO ==================声明变量
/**
可读可改 变量名 类型 值
var name : String = "Hello World"
*/
var name = "Oh~~yeh"
name = "Oh~~~No"
println(name)
//TODO ==================内置数据类型
/**
String 字符串
Char 单字符
Boolean true/false
Int 整型
Double 小数
List 集合
Set 无重复的集合
Map 键值对
Int ---》 java int
Float ---》 java float
*/
}
kotlin语言的推断以及只读变量
fun main() {
//TODO ==================Kotlin语言的只读变量
// 默认提示:变量永远不会被修改,建议改成 val ==不可改变的量
var result ="ZS"
val result1 = "ZS"
result="LS"
//result1="LS" 不可变量
//TODO ==================kotlin的语言推断
var info:String = "zs"//这里类型推断时多余的
var info1 =true
var info2:Boolean =true
var info3 =1.324f
var info4 =13312421L
}
kotlin编译时常量
const val b = "" //定义编译时常量
fun main() {
//TODO ==================Kotlin语言的编译时常量
/** 编译时常量只能是常用的基本数据类型:(String,Double,Int,Float,Long,Short,Byte,Char,Boolean) */
val a = "" //这个称为只读类型的变量
//const val b = "" //提示修饰符不适用于 局部变量
//TODO ==================编译时常量只能定义在函数之外,为什么?
//TODO ==================如果在函数之内定义,就必须在运行时才能函数赋值,何来编译时常量一说
//TODO ==================结论:编译时常量只能在函数之外定义,这样就可以在编译期初始化了
}
Kotlin查看字节码文件
kotlin引用数据类型
fun main() {
//TODO ==================Kotlin语言的引用数据类型学习
var age: Int? = 18 //Int 引用类型会不会耗费性能 自动拆箱
var pi =3.1415f //
var pi2 =3.1415 //
}
kotlin range表达式
fun main() {
//TODO ==================Kotlin语言的range表达式
var number =148
// range范围 从哪里 到哪里
if (number in 1..100) {
println("正常")
}else if (number in 100..1000) {
println("不正常")
}
}
kotlin when表达式
kotlin String模板
fun main() {
//TODO ==================Kotlin语言的String模板
var garden="森林公园"
var data ="2022/2/22"
println("今天天气真不错打算去${garden},就决定${data}去吧!")//今天天气真不错打算去森林公园,就决定2022/2/22去吧!
// KT的if是表达式,所以可以更灵活, Java的if是语句,还有局限性
val isLogin = false
//sever is login result: 登陆失败哦
println("sever is login result: ${if (isLogin) { "恭喜你登陆成功" } else { "登陆失败哦" }}")
}
kotlin函数头学习
kotlin函数参数的默认参数
fun main() {
//TODO ==================Kotlin中的函数参数的默认参数
action("张三") //我的姓名是:张三,我的年龄是:77
action("李四",99)//我的姓名是:李四,我的年龄是:99
}
private fun action(name:String,age:Int=77){
println("我的姓名是:${name},我的年龄是:${age}")
}
kotlin语言的具名函数参数
![](https://java0420-1313026349.cos.ap-chengdu.myqcloud.com/attach/20230222/4460226e8f804acd8a4165f8d46c7801.png)
kotlin中的Unit函数特点
fun main() {
//TODO ==================Kotlin中的Unit函数特点
}
//, Java语言的void关键字(void是无参数返回的忽略类型) 但是他是关键字不是某一个类型
// :Unit不写,默认也有,Unit代表 无参数返回 忽略类型 ==Unit类型类
private fun dowork():Unit{
println("")
}
kotlin语言的Nothing类型特点
fun main() {
//TODO ==================Kotlin语言的Nothing类型特点
show(-1)
}
private fun show(number: Int){
when(number){
-1 ->TODO ("没有这种分数")
in 0..1 ->println("分数不及格")
in 2..10 -> println("分数不及格")
in 11..20 -> println("分数不及格")
in 21..30 -> println("分数及格")
}
}
interface A {
fun show()
}
class AImpl : A {
override fun show() {
//下面这句话不是注释提示,会终止程序的
TODO("Not yet implemented")
}
}
Kotlin语言的反引号中的函数名特点
public class Demo03 {
//in is 在Java里面就是普通函数
public static final void in(){
System.out.println("in run success");
}
public static final void is(){
System.out.println("is run success");
}
}
fun main() {
//TODO ==================Kotlin语言的反引号中的函数名特点
//第一种情况
`登陆功能 2023年八月八日测试环境下 测试登陆功能 需求编码人是tangrufei`("张三","123456")
//第二种情况://in is 在Kotlin里面是关键字
Demo03.`in`()
//第三种情况:很少发生
`21314514`()
}
private fun `登陆功能 2023年八月八日测试环境下 测试登陆功能 需求编码人是tangrufei`(name: String,pwd: String){
println("模拟用户人是:${name},密码是:${pwd}")
}
private fun `21314514`(){
//核心功能
//对应了公司某个功能,功能很复杂,某个文档上记录这个数字代表的函数的作用
}