Kotlin小白学习笔记(持续更新中)
main方法
//快捷: 直接打main
fun main() {}
声明变量及数据类型
//var声明,变量名在前,变量类型在后
var name: String="程序员"
数据类型(不全)
//kotlin版数据类型
/*
String 字符串
Char 单字符
Boolean true,false
Int 整形
Double 双精度浮点型
Float 浮点型
List 集合
Set 无重复的元素集合
Map 键值对的集合
*/
只读声明变量与可读可写声明变量
//var 可读可写 变量可被修改
var info:String ="程序员"
//val 只读 变量不可被修改
val book:String="书"
kotlin的类型推断
//提示: Explicitly given type is redundant here
// 显示给定的类型在这里是多余的
val info:String="derry"
println(info)
//kotlin可根据后面的值判断所属类型
//省略格式:
val info1="derry"
println(info1)
const 定义编译时常量
1.编译时常量只能是常用的基本数据类型: (String,Double,Int,Float,Long,Short,Byte,Char,Boolean)
2.编译时常量只能在函数之外定义 原因: 在函数之内定义,就必须在运行时才能调用函数赋值,何来编译时常量一说
3.结论: 编译时常量只能在函数之外定义,就可以在编译期间初始化
const val num=56 //定义编译时常量
fun main() {
//提示: 修饰符const不适用于 局部变量
const val num=56 //报错
}
kotlin的引用类型
//Java有两种数据类型:
//第一种: 基本类型:int double等
//第二种: 引用类型 String等
//kotlin只有一种数据类型:
//看起来是引用类型,实际上编译器会在Java字节码中,修改成基本类型
Int 等等 引用类型
range表达式
fun main() {
//range表达式 范围 从哪里 到哪里 (包括左右两边的数值)
val number=100
if (number in 10..59){
println("不及格")
}else if(number in 0..9){
println("不及格并且分数很差")
}else if (number in 60..100){
println("合格")
}else if (number !in 0..100){
println("分数不在0和100范围内")
}
}
when表达式
//kotlin的when表达式
fun main() {
val week=9
//类似于switch用法
//kotlin的表达式 有返回值的,Java中的为语句,没有返回值
//如果只有一种数据类型那就返回这个类型,只有括号那就返回Unit,有括号和数据类型共存的返回Any(相当于java的object类)
//Unit相当于java的void关键字,代表无返回值
val info=when(week){
1 -> "走了1"
2 -> "走了2"
3 -> "走了3"
4 -> "走了4"
5 -> "走了5"
else ->{
println("走了")
}
}
println(info)
}
运行结果:
走了
kotlin.Unit //无返回值
String模板
//String模板
fun main() {
val garden="黄石公园"
val time=6
//${garden}玩 $time 个 两种写法 后者不能与文本紧挨,可与符号紧挨
println("天气很好,去${garden}玩,玩了$time 个小时")
//kotlin的if为表达式,使用更灵活,else不能与if的内容紧挨
val islogin=true
println("登录结果: ${if (islogin) "登录成功" else "登录失败"}")
}
kotlin函数头
先有输入,再有输出
函数参数的默认参数
具名函数参数
//具名函数参数
fun main() {
//参数可以不按顺序传值进去
login(age = 16, username = "烦烦烦", p = "1")
}
private fun login(username: String,p : String,age: Int){
println("username:$username,password:$p ,age:$age")
}
Unit类的特点
默认有Unit 可以省略
Nothing类型特点
//Nothing类型特点
fun main() {
show(-1)
}
//类似于Java的异常报错(try/catch)
private fun show(number :Int){
when(number){
-1-> TODO("没有这种分数") //TODO()返回Nothing类型 用来抛出异常
in 0..60 -> println("分数不及格")
in 60..100 -> println("分数及格")
}
}
反引号用法
//反引号的用法
fun main() {
//三种使用情况:
//若函数名在kotlin中为关键字等等
//公司加密使用
//测试使用
`登录功能需求编码人是arry`("arry","123456")
}
private fun `登录功能需求编码人是arry` (name:String,password:String){
println("用户名是$name,密码是$password")
}