当前位置:网站首页>Kotlin—基本语法(一)
Kotlin—基本语法(一)
2022-07-31 09:09:00 【光临天下】
欢迎大家加入正式我的Kotlin语言学习~
一、标识符和关键字
标识符就是大家给函数(Java中的方法)、变量、常量、类、接口取的名字。
关键字又称保留字,就是系统已经定义好的标识符。目的就是告诉开发人员,不能使用关键字为标识符。
标识符的规则:
关键字
- kotlin的关键字都是小写(和Java一样)
- 硬关键字:无法直接做为标识符,除非使用``。不建议
- 软关键字:可以做标识符,不建议
- 修饰符关键字:可以做标识符,不建议
怎么使用关键字作为标识符呢?
val class="111" // 错误
val `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 ="别的王"
}
所以变量可以再次赋值,就不展开说了,具体和常量相似,也有顶层变量等
开发中优先考虑使用val声明,防止程序中间修改值后发生错误。但也不要过渡
自动类型推断
在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的中的常量
边栏推荐
- djangoWeb应用框架+MySQL数据4
- 【NLP】Transformer理论解读
- jupyter notebook初使用
- JSP config对象的简介说明
- (selenium)Service geckodriver unexpectedly exited. Status code was: 64
- 服务器上解压文件时提示“gzip: stdin: not in gzip format,tar: Child returned status 1,tar: Error is not recovera“
- js雷达图统计图表插件
- [MySQL exercises] Chapter 3 Common data types in MySQL
- Scala basics [seq, set, map, tuple, WordCount, queue, parallel]
- 51单片机-----外部中断
猜你喜欢
MySQL 日期时间类型精确到毫秒
How on one machine (Windows) to install two MYSQL database
作为面试官,关于线程池的问题我一般这样套路...
【机器学习】用特征量重要度(feature importance)解释模型靠谱么?怎么才能算出更靠谱的重要度?
关于挂载EXfat文件格式U盘失败的问题
SQL join table (inner join, left join, right join, cross join, full outer join)
The future of the hybrid interface: conversational UI
ONES 入选 CFS 财经峰会「2022数字化创新引领奖」
【Unity】编辑器扩展-01-拓展Project视图
[MySQL exercises] Chapter 5 · SQL single table query
随机推荐
生成随机数
Define event types in Splunk Web
第二十四课、二十五课,高级光照(blinn),Gamma矫正
【MySQL中auto_increment有什么作用?】
科目三:左转弯
C# 正则表达式汇总
2019 NeurIPS | Graph Convolutional Policy Network for Goal-Directed Molecular Graph Generation
Flink1.15源码阅读——PER_JOB vs APPLICATION执行流程
js implements the 2020 New Year's Day countdown bulletin board
ecshop安装的时候提示不支持JPEG格式
手写promise
How to restore data using mysql binlog
编译器R8问题Multidex
【Unity】编辑器扩展-04-拓展Scene视图
Aleo Testnet3规划大纲
Splunk Workflow action 给我们带来的好处
SSM framework explanation (the most detailed article in history)
qt在不同的线程中传递自定义结构体参数
2022/7/30 考试总结
Scala basics [seq, set, map, tuple, WordCount, queue, parallel]