这一篇先记录一下学习到的kotlin基础,变量的声明,函数的基本写法,条件语句这些,这部分内容不涉及到生僻的关键字,但是又是kotlin入门不得不会的东西
声明变量
var name : String = "鼻涕粑粑"
var/val -> 变量定义关键字
val关键字声明变量为只读变量,var表示变量可读可写;val的作用和Java的final关键字类似,变量赋值后不可修改
多说一句:可能是我写Java的习惯不好,除了在匿名内部类要访问的局部变量不得不声明为final之外,其他的类变量声明很少用final去定义,毕竟要多写一个关键字,不写final也不影响正常的编码工作;kotlin声明变量必须的得带上var/val关键字,那么反正都是要写,变量如果是只读变量,那就定义为val就很理所当然了,写val也就更好的满足开闭原则,对于修改是关闭了,只读变量就不让你直接修改了,能更好的确保代码的正常运行,减少运行时修改变量值导致的不可预期错误
name -> 自定义的变量名
:String -> 变量的类型 定义
变量的类型不同于Java写在变量名的前面,先写变量类型再跟变量名,这点一开始写kotlin就很不习惯了,但是kotlin可以自动进行类型的推断,可以不显式的声明变量名,通过变量的赋值参数,动态的去推断变量的类型,但是由于kotlin依旧是强类型语言,如果推断出了变量类型,再赋值其他类型的值,编译器就会提示不通过的,赋值为非空值,自动推断的类型也是不带?的非空类型,赋值为null也是不可以的
var name = "鼻涕粑粑"
name = 1 // The integer literal does not conform to the expected type String
name = null // Null can not be a value of a non-null type String
= "鼻涕粑粑" -> 赋值运算符和赋值参数
kotlin内置数据类型
| 类型 | 描述 | 示例 | 类型 | 描述 | 示例 |
|---|---|---|---|---|---|
| String | 字符串 | “鼻涕粑粑” | Char | 单字符 | “L” |
| Boolean | ture/false | true false | Int | 整型 | 30 |
| Double | 小数 | 1.70 | List | 元素集合 | 1,2,3 |
| Set | 无重复元素的集合 | “鼻涕”,“粑粑” | Map | 键值对集合 | “S” to 50,"M" to 60,"L" to 70 |
跟Java不一样,Java提供的有int,float这类的基本数据类型,也有Integer这类的引用类型类型,kotlin值提供了引用类型这一种数据类型,但是编译器会在Java字节码中,编译为Java的基本数据类型,以提高性能
这里看到Map类型的参数是键值对是使用to关键字进行连接的,后续的文章会介绍to关键字是什么
编译时常量
编译时常量就是在编译期就已经赋值的常量,在Java我们一般使用 static final 去定义编译时常量
const val NAME = "鼻涕粑粑"
kotlin中使用上述的方式进行定义编译时常量,值得注意的是,编译时常量不能定义在函数里面,因为函数都是在运行时才调用,函数内的变量也就都是在运行时才赋值,编译时常量所以只能定义在函数的外面
编译时常量只能是常见的基本数据类型:String、Int、Double、Float、Long、Short、Byte、Char、Boolean
逻辑控制语句
开发中,使用Java的条件控制语句基本上就是 if/else语句,for/while循环语句,还是switch/case条件语句 kotlin中的条件表达式更加的灵活
if/else 表达式在使用上和Java区别不大,只是kotlin中科院直接用来给参数赋值,kotlin中没有三目运算符,科院使用if/else表达式实现
val a = "鼻涕粑粑"
val b = 30
val c = if (b == 18) a else b //使用表达式可以直接赋值
for 循环语句,在循环条件上,kotlin使用range表达式,通过关键字in进行连接
for (a in 1..10){
//【1,10】1到10的闭区间循环
}
除了使用 .. 表示闭区间之外,range表达式还有其他的关键字来表明边界值是否可以取
| 表达方式 | 取值 |
|---|---|
| 1..4 | [1,4] -> 1,2,3,4 |
| 1 until 4 | [1,4) -> 1,2,3 |
| 4 downTo 1 | 4,3,2,1 |
| 1..8 step 2 | 1,3,5,7 |
when表达式,加强版的switch/case,Java中switch条件支持的条件类型还是整型,而when表达式科院编写一个条件式,在某个条件满足的时候,执行相应的代码,条件表达和执行逻辑通过 -> 连接; 代码中的if/else分支,都可以改用when表达式,代码条件更好阅读
val name = "鼻涕粑粑"
val age = when(name){
"鼻涕粑粑" -> 30
"大鼻涕" -> 18
else -> 0
}
when表达式也可以直接赋值
string模板
写Java的时候有时候打印一些变量值,还需要通过“” + 变量名 进行字符串的拼接,kotlin提供了可以在引号内放入变量值,简直不要更方便 除了直接插入变量,还可以插入表达式,然后表达式的值会拼接在字符串里面
val name = "鼻涕粑粑"
println("name is $name ,age is ${if (name == "鼻涕粑粑") 30 else 18}")
变量值的插入,直接使用+{},将内如写在{}中即可