成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Kotlin學(xué)習(xí)(一):基本語法

myeveryheart / 1175人閱讀

摘要:操作符如果當(dāng)不為時(shí)候就會返回,否則干脆拋出空指針異常。以上資料,有部分參考自入門之

今天說一下Kotlin的基本語法,主要包括以下部分:

1.變量
2.操作符
3.函數(shù)

先來了解一下Kotlin代碼是什么樣子吧,這是一個(gè)HelloWorld

package com.oppo.demo.test  //包的聲明

import java.util.*  //  導(dǎo)包,這里可以導(dǎo)入Java類,可以正常使用

/**
 * 程序入口
 */
fun main(args: Array) {
    //輸出字符 代碼結(jié)尾不需要寫分號
    println("Hello world")
}

需要注意的是,在Kotlin中,不再向Java那樣,代碼結(jié)尾不需要寫“;”了

注釋
// 這是一個(gè)行注釋

/* 這是一個(gè)多行的
   塊注釋。 */

/**
 * 函數(shù)、類注釋
 */
變量

在Kotlin中,變量分為只讀變量和可變變量,聲明變量的方法也和Java不同,和JS類似

//只讀變量
val name = "小明" //自動(dòng)推斷出類型
val age:Int = 22 // 明確類型
val email:String //如果沒有初始值 則需要明確類型
email = "[email protected]"

//可變變量
var score = 90.5
score += 2

我們嘗試給name重新賦值,看看會出現(xiàn)什么結(jié)果:

可以看到編譯器報(bào)錯(cuò),所以:

var - 用于定義可變變量

val - 用于定義只讀變量

變量類型,和Java一模一樣

var b1:String   //字符串
var b2:Char     //字符
var b3:Int      //整型
var b4:Double   //雙浮點(diǎn)
var b5:Float    //浮點(diǎn)數(shù)
var b6:Byte     //字節(jié)
var b7:Long     //長整型
var b8:Boolean  //布爾
使用可空值及 null 檢測

開發(fā)過Java的人都知道,程序報(bào)異常了,打開控制臺一看,你肯定能看到NullPinterException的存在。Kotlin的類型設(shè)計(jì)系統(tǒng)旨在消滅“空指針異?!?,那么是怎么做到的呢?

正常情況下,變量都不允許直接賦值為null,比如以下這段代碼是錯(cuò)誤的:

fun returnNull():String{
    return null  //error,不能賦null值
}

或者

var str:String
str = null  //error

那么,有時(shí)候我們確實(shí)需要返回null值,要怎么做呢?

當(dāng)某個(gè)變量的值可以為 null 的時(shí)候,必須在聲明處的類型后添加 ? 來標(biāo)識該引用可為空。

fun returnNull():String?{
    return null
}

//變量也是一樣
var str:String?
str = null

值得注意的是,當(dāng)我們使用一個(gè)可空變量的時(shí)候,編譯器會報(bào)一個(gè)錯(cuò),它會認(rèn)為這是不安全的,這種情況下我們需要自己去做類型檢查

if(str != null)
    println(str.length)

或者

var str:String? = returnNull()

if(str == null){
    return
}

//// 在空檢測后,str 會自動(dòng)轉(zhuǎn)換為非空值
println(str.length)

以上這段代碼可以簡寫為:

//變量也是一樣
var str:String? = returnNull() ?: return

//// 在空檢測后,str 會自動(dòng)轉(zhuǎn)換為非空值
println(str.length)
這里涉及到了操作符的問題

那么,這里說一下Kotlin一些新的操作符

1.安全調(diào)用操作符
var length =str?.length

如果當(dāng)str不為null時(shí)候就會返回str.length,否則返回null。

2.Elvis操作符
val length2 = str?.length ?: -1

如果當(dāng)str不為null時(shí)候就會返回str.length,否則返回-1。

3.!!操作符
val length3 = str!!.length

如果當(dāng)str不為null時(shí)候就會返回str.length,否則干脆拋出空指針異常。
依我看,這個(gè)操作符還是少用吧。。。

同樣,也適用于類型轉(zhuǎn)換

//類型轉(zhuǎn)換  如不成功給個(gè) null
val s = "1"
val s1: Int? = s as? Int
函數(shù)

函數(shù)使用fun來定義,缺省返回值為Unit,類似于Java中的void
下面列出幾種常見的函數(shù)定義

沒有返回值的函數(shù)
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}")
}
明確返回值類型函數(shù)
fun sum(a: Int, b: Int): Int {
    return a + b
}
自動(dòng)推斷返回值的函數(shù)
fun sum(a: Int, b: Int) { 
  return a + b
}
簡寫的函數(shù)
fun sum(a: Int, b: Int)  =  a + b

//這里,可以使用if作為表達(dá)式
fun calc(a: Int, b: Int)  =  if(a > b) a+b else a-b
可返回null的函數(shù)
fun returnNull():String?{
    return null
}

以上就是,今天學(xué)習(xí)的內(nèi)容,后續(xù)再說選擇結(jié)構(gòu)、表達(dá)式、循環(huán)結(jié)構(gòu) 等。

以上資料,有部分參考自:kotlin入門之"null"

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/70215.html

相關(guān)文章

  • 現(xiàn)代編程語言最有趣的 10 大特性

    摘要:本文地址閱讀時(shí)間大概分鐘如今大多數(shù)現(xiàn)代語言都依然使用老舊的語法。我們看一下編程語言的年代等等。這些都是上個(gè)世紀(jì)的語言了。我覺得還有要給非常有用的特性,。之所以沒有提到,是因?yàn)榇蠖鄶?shù)語言都已經(jīng)有這個(gè)特性了吧,看來還是發(fā)展太慢啊。。。 dev-reading/fe 是一個(gè)閱讀、導(dǎo)讀、速讀的 repo,不要依賴于 dev-reading/fe 學(xué)習(xí)知識。本 repo 只是一個(gè)快速了解文章內(nèi)容...

    sanyang 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<