Kotlin—基本语法
欢迎大家加入我的Kotlin语言学习,因为本人从事Android所以本次学习Kotlin不涉及Android以外。
如果你是第一学习编程语言请先看这里,所以我省略一些太基础的知识和环境等基本操作(做过开发都会)
我会写一篇声明博客,为了不浪费你的时间,因为涉及到版权的问题,我会在这写上我参考的资料,拒绝抄袭!!!
我将快速而全面的讲我们的Kotlin,下面快速吧!
一、标识符和关键字
标识符就是大家给函数(方法)、属性(变量和常量)、类、接口取的名字。
关键字又称保留字,就是系统已经定义好的标识符。目的就是告诉开发人员,不能使用关键字为标识符。
标识符的规则:
- 不能使用$或者直接使用硬关键字
- 区分大小写
- 首字符,可以是下划线和字母、不能使用数字(大部分语言都是)
- 建议不要使用field和it做为标识符
关键字
Kotlin的关键字都是小写(和Java一样)
硬关键字:无法直接做为标识符,除非使用``。不建议
软关键字:可以做标识符,不建议
修饰符关键字:可以做标识符,不建议
怎么使用关键字作为标识符呢?
var class="111" // 错误
var `class`=11 //正确
二、常量和变量
常量
不能改变的量,一旦赋值就无法再次赋值的量,和变量相反。
运行期常量
声明一个运行期常量:
val wang="王"
它是在运行时才赋值的常量,就是说你可以在运行时前再给它赋值(初学不必太纠结,知道val是常量就行)
顶级常量
声明一个顶级常量:
val wang="王"
class Demo {
}
顶级变量可以在别的处使用看栗子1,它属于这个.kt文件(这里你就要了解Kotlin的导包和java有些不同,看栗子2)
栗子1
val w="1"
class Demo {
val wang ="王"
fun a(){
println(w)
println(wang)
}
}
class Demo2{
fun a(){
println(w)
// println(wang) //编译不通过
}
}
栗子2
1.stringone是一个常量
2.我在这里使用stringone,不属于一个包,而且stringone是一个变量
3.包的位置不同
编译期常量
就是在,编译期时就赋值的常量
声明一个编译期常量:
const val wang="王"
class Demo {
}
注意点:
- 位于顶层或者是 object 声明 或 companion object 的一个成员
- 以
String
或原生类型值初始化(就是只能是String和基本数据类型) - 没有自定义 getter
变量
变量就是就是一个可以变的量,它可以多次赋值。
变量让你能够把程序中准备使用的每一段数据都赋给一个简短、易于记忆的名字
声明一个变量
var wang ="王"
fun `var` (){ //var是关键字哦,没有看懂的请仔细看标识符讲的
wang ="别的王"
}
所以变量可以再次赋值,就不展开说了,具体和常量相似,也有顶层变量等
自动类型推断
在Java中声明一个常量需要这样
final String wang="王";
你需要告诉它是String类型,Kotlin不需要
class Demo {
val wang="王" //编译通过
// val wang //编译通过错误
}
你可以看到,如果需要自动推断类型,你必须给它赋值,要不然编译器根本不知道是什么类型。
语句和表达式
语句:一条指令,它没有返回值
表达式:有返回值的代码
举栗子
var max = 1 + 2 //表达式
var min = false
while (min) { //语句
}
// var `while` =while (min) { //编译失败
//
// }
注意 Kotlin的 if语句它叫语句也有返回值
fun main(args: Array<String>) {
var `var` = false
var a = if (`var`) {
"王"
} else {
"不是王"
}
println(a)
}
Kotlin的语句结束
在java中语句是以;为结束的,Kotlin也是。但是有不同之处,你好好看看
fun main(args: Array<String>) {
// 第一种写法
var max = 1
var min = 2
// 第二种写法
// var my=3 var you=4/ //编译错误
// 第三种写法
var my = 3; var you = 4
}
注意第二种是错误的,事实上;还是结束语句,但是大部分可以省略,不行你格式化代码一下
第一章东西就不要太多了,接下到下一篇文章再讲。
小技巧:Java中常量为什么定义为public static final 其实Kotlin的编译期常量才像Java的中的常量