1. 程式人生 > >Kotlin之基礎型別

Kotlin之基礎型別

1.分號

    熟悉java開發的朋友都知道每寫完一行程式碼最後要帶一個分號結尾。但是kotlin已經不需要啦

如: setContentView(R.layout.activity_main)     initToolbar()都不需要帶分號了。

2.變數宣告和方法

java:  public void main() void關鍵字

kotlin: public fun main() fun作為方法的關鍵字

//宣告變數和指定型別


    a和b表示宣告變數的名字,Int表示宣告變數的型別,中間用:表示。

    細心的朋友一定會發現一個是var, 一個是val, 它們的區別是什麼呢。

    var其實就是跟正常java賦值變數一樣可以進行get, set方法。但是val其實就是java加一個關鍵字final只有get方法不能set方法。 也就是說a變數可以重新賦值,但是b因為類似於final所以不能重新賦值。

    當然你可以省略變數的型別,因為kotlin會通過你賦值的型別去自動識別。


    Kotlin支援的基本型別和java一樣,如下。但是有一點切記Kotlin進行對變數或者物件初始化的時候一定要賦上初始值。 


    ${}的用法的介紹,在字串裡呼叫b


輸出的結果是Dog

3.null安全

    null可以說是Kotlin語言對java的重大改進之一,這樣可以便面了Java程式設計時令人恐懼的NullPointerException。

例子如下


    首先因為str裡沒有數字所以執行到numOne會報錯, 因為Kotlin支援2種類型,一種是非空型別,另一種是可空型別。可空型別需要帶有?表示符號,因為numOne沒有帶有?所以它屬於非空型別,又由於str帶有字串所以返回的會是null,所以再行在執行numOne的時候會報錯。numTwo 和numThree是可空型別,numTwo把型別省略掉了Kotlin會跟你賦予的值來自動識別所以numTwo和numThree是一樣的。numFour因為轉成的是int或者是null,但是numFour接受是非null型別,所以在編譯的時候回報錯。

在定義一個實體類Dog, 並且設定可null型別,在呼叫的時候一定需要帶有安全呼叫否者會報錯。


此外,安全呼叫還可以與let全域性函式結合使用,


注意:呼叫某物件的let函式,則該物件為函式的引數。在函式塊內可以通過 it 指代該物件。返回值為函式塊的最後一行或指定return表示式。因為最後一行為返回值,所以每個arr結果列印都是3。kotlin想這樣的以最後一行為返回值的還有很多如run   with等都是這樣的。其他的語法糖會在接下來的文章裡逐一介紹。


    for和arrayOf接下來會介紹,不過相信有程式設計經驗的同學應該可以看懂的,arrayOf是陣列, for遍歷陣列let是kotlin其中的一個語法糖,也就是說item如果不為null的話會呼叫let裡邊的函式, it是關鍵字代表item的值。是不是感覺很爽,如果要是java還得加上判斷等,用kotlin直接用let的語法糖就可以了。當然了有的時候需要的型別是非null的型別,如何將可null的型別傳進去呢。這個時候用到了Kotlin的強制呼叫 !!帶有兩個歎號的修飾符。下邊的例子也就是說無論item為不為null都會呼叫。但是這回引發“NPE”空指標異常,所以一定要慎用。(有一些呼叫android控制元件的方法的時候就需要傳入非空型別,所以具體的事情具體分析)


4.Kotlin字串的用法

雖然Kotlin的string和Java的string並不是同一個類,但是這個2個類所提供的功能大致相似。實際上Kotlin的String類提供了更多的方法,如提供了一系列的toXxx()方法將字串轉成數值,例子如下

val s1 = "2.34"

val d: Double = s1.toDouble()


我也就不一一介紹了,具體可以參考Koltin官方

對於有一定java經驗的開發者來說,前面的幾個章節過於簡單了,所以我認為大概瀏覽一遍即可。後續文章會盡快更新~

相關推薦

Kotlin基礎型別

1.分號    熟悉java開發的朋友都知道每寫完一行程式碼最後要帶一個分號結尾。但是kotlin已經不需要啦如: setContentView(R.layout.activity_main)     initToolbar()都不需要帶分號了。2.變數宣告和方法java:

Kotlin從入門到深坑】基礎型別

簡介 本篇部落格主要是介紹Kotlin語法中的【基礎型別】相關的知識,幫助各位更快的掌握Kotlin,如果有疏漏或者錯誤,請在留言中指正,謝謝。 系列彙總地址 準備 在學習之前我們先有點基礎知識上的認識,如下: Kotlin和java程式碼可以混合

Java 7基礎型別第1篇

public static double div(double v1,double v2) { return div(v1,v2,10); } /** * 提供(相對)精確的除法運算。當發生除不盡的情況時,由scale引數指定精度,

Python基礎(二)變數型別

整數 int,包括正整數,負整數,-100,0,100,十六進位制,字首0x和0-9,a-f表示 浮點數 float,浮點數即為小數,因為按照科學計數法,小數點的位置是可變的,比如1.23的三次方和12.3的二次方是相等的 整數與浮點數在計算機內部的儲存方

C++基礎學習複合型別(2)

複合型別 陣列 字串 string類 結構 共用體 列舉 指標(new delete管理動態記憶體) 動態陣列,動態結構 vector和array類 1.陣列 陣列宣告格式: typeName arrayName[ar

Java基礎自動型別轉換

三種可以進行自動型別轉換的情況: (1)整數型別之間可以實現轉換,如byte型別的資料可以賦值給short、int、long型別的變數,short、char型別的資料可以賦值給int、long型別的變數,int型別的資料可以賦值給long型別的變數。 (2)整數型別轉換為float型別,如b

Linux高階程式設計基礎——檔案系統程式設計檔案型別資訊

/*檔案系統程式設計之檔案型別資訊——實驗題/ //編寫程式實現以下功能: //1.輸入檔名稱,能夠判斷檔案型別,判斷實際使用者對該檔案具有哪些存取許可權; //2.要求打印出檔案型別資訊,inode節點編號,連結數目,使用者id,組id,檔案大小資訊; //3.修改檔案的許可權為當前使

python筆記基礎資料型別

八大基礎資料型別 int python 中沒有溢位,再大的值也可以用int num = 10 num++ 報錯,num只是儲存資料10的容器,容器不可以自增自減 print(num) # 列印容器中存放的值10 地址 print(id(num)) # id

python開發基礎資料型別、字元編碼、檔案操作

一、知識點 1.身份運算: 2.現在計算機系統通用的字元編碼工作方式:在計算機記憶體中,統一使用Unicode編碼,當需要儲存到硬碟或者需要傳輸的時候,就轉換為UTF-8編碼。用記事本編輯的時候,從檔案讀取的UTF-8字元被轉換為Unicode字元到記憶體裡,編輯完成後,儲存的時候再把Unicode轉

rust學習筆記中級篇2–結構體與基礎型別成員函式的實現(霜小刀)

rust學習筆記中級篇2–結構體與基礎型別成員函式的實現(霜之小刀) 歡迎轉載和引用 若有問題請聯絡請聯絡 Email : [email protected] QQ:2279557541 結構體的成員函式的實現 先看個最簡單的示例。

Java基礎學習引用型別陣列訪問NullPoint問題

以題目引入:      面試題:int[] a = new int[10];Student[] a = new Student[10];的區別? 解析:      第一反應就是記憶體空間方面的儲存位置不同,因為Java中儲存

L2基礎資料型別字串的處理和判斷基礎型別

字串也可以被遍歷,輸出單個字母,迭代(sequence) for i in 'afaffsad': print(i) (以下不常用,常用的會特別註明) 轉換大小寫 轉小寫 'aa AAA'.lower() >>> 'aa aaa' 轉大寫 'a

MySQL基礎系列 資料型別大全

MySQL中定義資料欄位的型別對你資料庫的優化是非常重要的。MySQL支援多種型別,大致可以分為三類:數值、日期/時間和字串(字元)型別。 數值型別 MySQL支援所有標準SQL數值資料型別。 這些型別包括嚴格數值資料型別(INTEGER、SMALLINT、DECIMAL和NUMERIC

python基礎資料型別

資料型別: 基礎資料型別: 整數:正負整數 浮點數:也就是小數,一般用科學計數法表示,如:1.02e-12 布林值:True/False,其實就是整數,True=1, False=0 字串:用單引號或則雙引號引用的資料。 空值:None,表示沒有物件,統一標準佔位

TypeScript基礎入門高階型別的對映型別

高階型別 對映型別 一個常見的任務是將一個已知的型別每個屬性都變為可選的: interface PersonPartial {     name?: string;     age?: number; } 或者我們想要一個只讀版本: interface Pers

Dart語法快速上手二 《Dart2變數及基礎型別

變數 變數的定義:dart中萬物皆物件,包括java中認為的基礎資料型別也是物件,所以我們初始化任何物件的時候,只要沒賦值,預設值都是null(null也是物件) 變數的分類(根據宣告方式,不再細說有哪些內建型別): String str = "Bob"

Python基礎學習資料型別

#列表 list1=[1,2,3] print(type(list1))   #字典 dict1={"title":"web開發"} print(type(dict1)) print(dict1['title'])   #元組 tuple1=(11

C#基礎篇②(變數、轉義符、運算子、型別轉換、++先加後加)

      今天我們來分享一下VS視訊中第二講的內容,這篇文章主要分享的是C#語言的語法部分:變數的語法規則,C#中的轉義符、運算子、預算表達式,C#中的型別轉換方式。 一、問題類(此部分純屬個人理解,如有不足還望指正) ①、什麼是轉義字元? 一些字母前加“

python基礎變數型別簡介

變數型別 變數儲存在記憶體中的值。這就意味著在建立變數時會在記憶體中開闢一個空間。 基於變數的資料型別,直譯器會分配指定記憶體,並決定什麼資料可以被儲存在記憶體中。 因此,變數可以指定不同的資料型別,這些變數可以儲存整數,小數或字元。 變數 python變數

python基礎變數型別Dictionary

變數型別-Dictionary 型別 字典的每個鍵值 key=>value 對用冒號 : 分割,每個鍵值對之間用逗號 , 分割,整個字典包括在花括號 {} 中. 鍵一般是唯一的,如果重複最後的一個鍵值對會替換前面的,值不需要唯一。 特性 和list