今天说一下Kotlin的基本语法,主要包括如下部分:java
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相似spa
//只读变量 val name = "小明" //自动推断出类型 val age:Int = 22 // 明确类型 val email:String //若是没有初始值 则须要明确类型 email = "hezhao_java@163.com" //可变变量 var score = 90.5 score += 2
咱们尝试给name从新赋值,看看会出现什么结果:设计
能够看到编译器报错,因此:指针
变量类型,和Java如出一辙code
var b1:String //字符串 var b2:Char //字符 var b3:Int //整型 var b4:Double //双浮点 var b5:Float //浮点数 var b6:Byte //字节 var b7:Long //长整型 var b8:Boolean //布尔
开发过Java的人都知道,程序报异常了,打开控制台一看,你确定能看到NullPinterException的存在。Kotlin的类型设计系统旨在消灭“空指针异常”,那么是怎么作到的呢?开发
正常状况下,变量都不容许直接赋值为null,好比如下这段代码是错误的:rem
fun returnNull():String{ return null //error,不能赋null值 }
或者
var str:String str = 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一些新的操做符
var length =str?.length
若是当str不为null时候就会返回str.length,不然返回null。
val length2 = str?.length ?: -1
若是当str不为null时候就会返回str.length,不然返回-1。
val length3 = str!!.length
若是当str不为null时候就会返回str.length,不然干脆抛出空指针异常。
依我看,这个操做符仍是少用吧。。。
一样,也适用于类型转换
//类型转换 如不成功给个 null val 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
fun returnNull():String?{ return null }
以上就是,今天学习的内容,后续再说选择结构、表达式、循环结构 等。
以上资料,有部分参考自:kotlin入门之"null"