日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

学习Kotlin(二)基本语法

發布時間:2025/3/21 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学习Kotlin(二)基本语法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

推薦閱讀:
學習Kotlin(一)為什么使用Kotlin
學習Kotlin(二)基本語法
學習Kotlin(三)類和接口
學習Kotlin(四)對象與泛型
學習Kotlin(五)函數與Lambda表達式
學習Kotlin(六)擴展與委托
學習Kotlin(七)反射和注解
學習Kotlin(八)其他技術
Kotlin學習資料總匯

目錄

一、分號;
二、定義變量、常量
三、字符串模板與字符串面值
四、自動類型轉換
五、定義函數
六、注釋
七、控制流
八、集合


一、分號;

在Java中,使用分號;標志一句完整代碼的結束。在Kotlin中,一句代碼結束后不用添加分號。

二、定義變量、常量

Java定義變量時把數據類型放在前面,變量名放在后面。

int a = 1; int b; b = 2;

Kotlin用var定義變量,把數據類型放在后面,并用冒號:隔開。

var a: Int = 1 var b: Int b = 2

Java用final定義常量,把final放在數據類型前面。

final int a = 1; final int b; b = 2;

Kotlin用val定義常量,把數據類型放在后面,并用冒號:隔開。

val a: Int = 1 val b: Int b = 2

三、字符串模板與字符串面值

1.字符串模板在Kotlin中,字符串可以包含模板表達式 ,即一些小段代碼,會求值并把結果合并到字符串中。 模板表達式以美元符($)開頭,由一個簡單的名字構成,如:

var a: String = "a" var b: String = "b" var c: String = "$a$b"

上面幾行代碼在Java中就等于

String a = "a"; String b = "b" String c = a + b

2.字符串字面值Kotlin有兩種字符串面值,轉義字符串和原生字符串。

  • 轉義字符串轉義字符串跟java字符串一樣,轉義采用反斜杠方式,如:
var a: String = "a" var b: String = "b" Toast.makeText(this, "$a\n$b", Toast.LENGTH_SHORT).show()

運行代碼:

?

  • 原生字符串原生字符串可以用三個"""作為分隔符括起來,內部沒有轉義并且可以包含換行和任何其他字符:
var a: String = "a" var b: String = "b" var c: String = """$a$b""" Toast.makeText(this, c, Toast.LENGTH_SHORT).show()

運行代碼:

?

可以看到前面有一段空格,這個時候可以通過trimMargin()?函數去除前導空格:

var a: String = "a" var b: String = "b" var c: String = """|$a$b""".trimMargin() Toast.makeText(this, c, Toast.LENGTH_SHORT).show()

運行代碼:

?

如上面例子所示,在需要去掉前導空格的那一行前面加上豎杠"|",再調用trimMargin()方法,就可以去掉前導空格。

四、自動類型轉換

Kotlin在定義變量或者常量時給他賦值,可以不指定他的類型,如:

var a = "aaa" //這里的a是String類型 val b = 1 //這里的b是Int類型

五、定義函數

  • 無返回值無參數

Java定義無返回值無參數方法,返回類型是void

void abc() {}

Kotlin定義無返回值無參數函數,返回Unit

fun abc(): Unit{}

也可以什么都不返回

fun abc(){}

可以看到Kotlin返回值的類型在函數末尾指定,并用冒號:分隔。

  • 無返回值有參數

Java定義無返回值有參數方法,返回類型是void

void abc(String str) {}

Kotlin定義無返回值有參數函數,返回Unit(或不返回)

fun abc(str: String) {}

括號里的參數跟定義變量常量一樣,先指定參數名,再指定參數類型,并用冒號:分隔。

  • 有返回值有參數

Java定義有返回值有參數方法,返回類型是String

String abc(String str) {return ""; }

Kotlin定義有返回值有參數函數,返回類型是String

fun abc(str: String): String {return "" }

返回值的類型在函數末尾指定,并用冒號":"分隔。

六、注釋

  • 單行注釋Java跟Kotlin一樣//單行注釋

  • 多行的塊注釋

Java跟Kotlin都可以這樣

/* 這是一個多行的塊注釋。 */

Kotlin塊注釋支持嵌套,代碼如下:

/* 這是一個多行的 塊注釋。/*再嵌套一個塊注釋 */ */

而Java不支持塊注釋嵌套

七、控制流

1.if表達式與三元運算符

Kotlin和Java中的條件語句用法大致相同,其中不同的是Kotlin中的if語句本身就是表達式,有返回值,類似于Java的三元表達式,如下所示:Java三元表達式

c = a > b ? 3 : 4;//如果a>b,c=3,否則c=4

對應的Kotlin中的if表達式

var c = if (a > b) 3 else 4

如果 if 或 else 后面是代碼塊的話

var c = if (a > b) {3 } else {4 }

2.when與switch

Kotlin中沒有Java的switch語句,取而代之的是更強大的when語句,如下所示:Java中的switch語句

int a = 0; switch (a) {case 0:break;case 1:break;default:break; }

Kotlin中對應的when語句

var a = 0 when (a) {0 -> {}1 -> {}else -> {} }

注意:when語句在滿足條件的分支執行后,會終止when語句執行,所以不用像switch語句那樣每一個case都加上break。如果很多分支需要用相同的方式處理,when語句可以把多個分支條件放在一起,用逗號,分隔,如下所示:

var a = 0 when (a) {0 -> {}1,2 -> {//如果a=1或a=2,執行該代碼塊}else -> {} }

when語句還能像if語句那樣作為表達式:

var a = 1 var b = when (a) {0 -> 0 //如果a=0,則b=01 -> 1 //如果a=1,則b=1else -> 2 //如果a=其他,則b=2 }

3.關鍵字in

當我們要判斷5是否在1-10里面,在Java中可以這么寫

int a = 5; for (int i = 0; i < 10; i++) {if (i == a) {return true;} else {return false;} }

如果同樣的判斷用Kotlin來寫,可以用關鍵字in來判斷

if (5 in 1..10){//1..10代表1-10的意思return true }else{return false }

4.關鍵字is

在Kotlin中可以用關鍵字is判斷對象的類型,如下所示:

fun hasPrefix(x: Any) = when(x) {//kotlin中所有類都有一個共同的父類: Anyis String -> {//如果x是String類型,執行該代碼塊}is Int -> {//如果x是Int類型,執行該代碼塊}else -> false }

注意上面出現了Any,Any是Kotlin中所有類都有一個共同的父類,有點像Java中的Object,但這個類不是java.lang.Object,這個類只有equals()、 hashCode()、toString()方法。

5.for循環

如果你想要通過索引遍歷一個數組或者一個list,可以使用for循環,如下所示:Java代碼

for (int i = 0; i < array.size(); i++) {System.out.println(i); }

Kotlin代碼

for (i in array.indices) {println(array[i]) }

除了普通的用法之外,Kotlin的for循環還可以這樣:

for ((index, value) in array.withIndex()) {println("the element at $index is $value")//index是索引,value是值 }

6.while 循環

Java跟Kotlin的while循環是一樣的,分為while和do...while:

var i = 0 while(i++ < 10){ }do{}while(i++<10){ }

八、集合

Java中的List,Set,Map:

List<Integer> integers = new ArrayList<>(); integers.add(1); integers.add(2); integers.add(3); integers.remove(1); integers.get(2); integers.clear();Map<String, Integer> map = new HashMap<>(); map.put("1", 1); map.put("2", 2); map.put("3", 3); map.remove("1"); map.get("2"); map.clear();Set<Integer> set = new HashSet<>(); set.add(1); set.add(2); set.add(3); set.remove(1); set.contains(2); set.clear();

Kotlin也有List,Set,Map,但Kotlin中的List,Set,Map都是不可修改的

上圖紅色代表編譯錯誤。就是說Kotlin的List,Set,Map中沒有可以修改集合的方法,是只讀的。當然Kotlin還提供了可以讀寫的集合,分別是MutableList,MutableSet,MutableMap,這些集合有可以修改集合的方法。

?

下面介紹一些Kotlin常用創建集合對象的函數:listOf:用于創建List對象

var list: List<Int> = listOf<Int>()

setOf:用于創建Set對象

var set: Set<Int> = setOf<Int>()

mapOf:用于創建Map對象

var map: Map<String, Int> = mapOf<String, Int>()

mutableListOf:用于創建MutableListOf對象

var mutableList: MutableList<Int> = mutableListOf() mutableList.add(1) mutableList.add(2) mutableList.add(3) mutableList.remove(1) mutableList.get(2) mutableList.clear()

mutableSetOf:用于創建MutableSetOf對象

var mutableSet: MutableSet<Int> = mutableSetOf() mutableSet.add(1) mutableSet.add(2) mutableSet.add(3) mutableSet.remove(1) mutableSet.contains(2) mutableSet.clear()

mutableMapOf:用于創建MutableMapOf對象

var mutableMap: MutableMap<String, Int> = mutableMapOf() mutableMap.put("1", 1) mutableMap.put("2", 2) mutableMap.put("3", 3) mutableMap.remove("1") mutableMap.get("2") mutableMap.clear()

總結

本篇文章主要對比了Java跟Kotlin的基本語法在寫法上的區別。會了基本語法,就等于踏出了從Java轉到Kotlin的第一步。


原文鏈接:https://juejin.im/post/5a7ba5066fb9a063563106ef

總結

以上是生活随笔為你收集整理的学习Kotlin(二)基本语法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。