Kotlin学习(一):基本语法

今天说一下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从新赋值,看看会出现什么结果:设计

Paste_Image.png

能够看到编译器报错,因此:指针

  • var - 用于定义可变变量
  • val - 用于定义只读变量

变量类型,和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  //布尔

使用可空值及 null 检测

开发过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一些新的操做符

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,不然干脆抛出空指针异常。
依我看,这个操做符仍是少用吧。。。

一样,也适用于类型转换

//类型转换  如不成功给个 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
可返回null的函数
fun returnNull():String?{
    return null
}

以上就是,今天学习的内容,后续再说选择结构、表达式、循环结构 等。

以上资料,有部分参考自:kotlin入门之"null"

相关文章
相关标签/搜索