Kotlin学习(一):基本语法
来源:互联网 发布:朴树旅途知乎 编辑:程序博客网 时间:2024/06/05 22:46
今天说一下Kotlin的基本语法,主要包括以下部分:
1.变量
2.操作符
3.函数
先来了解一下Kotlin代码是什么样子吧,这是一个HelloWorld
package com.oppo.demo.test //包的声明import java.util.* // 导包,这里可以导入Java类,可以正常使用/** * 程序入口 */fun main(args: Array<String>) { //输出字符 代码结尾不需要写分号 println("Hello world")}
需要注意的是,在Kotlin中,不再向Java那样,代码结尾不需要写“;”了
注释
// 这是一个行注释/* 这是一个多行的 块注释。 *//** * 函数、类注释 */
变量
在Kotlin中,变量分为只读变量和可变变量,声明变量的方法也和Java不同,和JS类似
//只读变量val name = "小明" //自动推断出类型val age:Int = 22 // 明确类型val email:String //如果没有初始值 则需要明确类型email = "hezhao_java@163.com"//可变变量var score = 90.5score += 2
我们尝试给name重新赋值,看看会出现什么结果:
可以看到编译器报错,所以:
- var - 用于定义可变变量
- val - 用于定义只读变量
变量类型,和Java一模一样
var b1:String //字符串var b2:Char //字符var b3:Int //整型var b4:Double //双浮点var b5:Float //浮点数var b6:Byte //字节var b7:Long //长整型var b8:Boolean //布尔
使用可空值及 null 检测
开发过Java的人都知道,程序报异常了,打开控制台一看,你肯定能看到NullPinterException的存在。Kotlin的类型设计系统旨在消灭“空指针异常”,那么是怎么做到的呢?
正常情况下,变量都不允许直接赋值为null,比如以下这段代码是错误的:
fun returnNull():String{ return null //error,不能赋null值}
或者
var str:Stringstr = null //error
那么,有时候我们确实需要返回null值,要怎么做呢?
当某个变量的值可以为 null 的时候,必须在声明处的类型后添加 ? 来标识该引用可为空。
fun returnNull():String?{ return null}//变量也是一样var str:String?str = null
值得注意的是,当我们使用一个可空变量的时候,编译器会报一个错,它会认为这是不安全的,这种情况下我们需要自己去做类型检查
if(str != null) println(str.length)
或者
var str:String? = returnNull()if(str == null){ return}//// 在空检测后,str 会自动转换为非空值println(str.length)
以上这段代码可以简写为:
//变量也是一样var str:String? = returnNull() ?: return//// 在空检测后,str 会自动转换为非空值println(str.length)
这里涉及到了操作符的问题
那么,这里说一下Kotlin一些新的操作符
1.安全调用操作符
var length =str?.length
如果当str不为null时候就会返回str.length,否则返回null。
2.Elvis操作符
val length2 = str?.length ?: -1
如果当str不为null时候就会返回str.length,否则返回-1。
3.!!操作符
val length3 = str!!.length
如果当str不为null时候就会返回str.length,否则干脆抛出空指针异常。
依我看,这个操作符还是少用吧。。。
同样,也适用于类型转换
//类型转换 如不成功给个 nullval s = "1"val s1: Int? = s as? Int
函数
函数使用fun来定义,缺省返回值为Unit,类似于Java中的void
下面列出几种常见的函数定义
没有返回值的函数
fun printSum(a: Int, b: Int): Unit { println("sum of $a and $b is ${a + b}")}//可以省略Unit fun printSum(a: Int, b: Int) { println("sum of $a and $b is ${a + b}")}
明确返回值类型函数
fun sum(a: Int, b: Int): Int { return a + b}
自动推断返回值的函数
fun sum(a: Int, b: Int) { return a + b}
简写的函数
fun sum(a: Int, b: Int) = a + b//这里,可以使用if作为表达式fun calc(a: Int, b: Int) = if(a > b) a+b else a-b
可返回null的函数
fun returnNull():String?{ return null}
以上就是,今天学习的内容,后续再说选择结构、表达式、循环结构 等。
以上资料,有部分参考自:kotlin入门之”null”
- Kotlin学习(一)基本语法
- Kotlin学习(一):基本语法
- kotlin学习(一)kotlin的基本句法语法
- Kotlin基本语法(一)
- Kotlin基本语法(一)
- Kotlin学习笔记一(基本语法)
- Kotlin 基本语法 (一)
- Kotlin基本语法一
- kotlin 基本语法(一)
- kotlin学习--基本语法
- Kotlin系列一(基本语法)
- Kotlin 学习笔记(一) 基本类型和基本语法
- kotlin语法学习一
- Kotlin学习(二)基本语法
- kotlin 学习记录 基本语法(1)
- kotlin 学习记录 基本语法 (2)
- kotlin 学习记录 基本语法 (3)
- Kotlin 学习笔记(1)基本语法
- ANSI是什么编码?
- DBUtils学习----QueryRunner类
- 6个UI面试技巧让你轻松入职大公司
- mac地址老化时间配置
- nfs无法挂载(客户端无法挂载服务器端)原因+解决方案
- Kotlin学习(一):基本语法
- Android创建WiFi热点研究(安全性为:无-WPA PSK-WPA2 PSK,Android6.0适配)
- 代码干货 | PHP数据库长连接mysql_pconnect的细节
- Qt线程之moveToThread
- ios有关字符串的工具类
- io--读写数据
- Matrix Power Series
- spring data redis rg.springframework.core.serializer.support.DeserializingConverter.<init>(Ljava/lan
- codeforces 835A Key races