1. 程式人生 > >Kotlin初學者指南

Kotlin初學者指南

你好,世界

Kotlin是一種靜態型別語言,在JVM上執行,並且與現有Java程式碼具有100%的互操作性。對於大多數Java開發人員來說,下面的程式應該非常熟悉:

包 com。bugsnag。科特林 ;

公共 課 App {
    public  static  void  main(String [] args){
        系統。出。println(“Hello World!”);
    }
}


以下將在Kotlin中列印“Hello World” 

fun  main(args:Array < String >){
    println(“Hello World!”)
}


一些差異是顯而易見的,例如缺少分號以及我們的程式碼是多麼簡潔。

科特林與 Java的

為了瞭解Kotlin,讓我們仔細看看它的功能以及它們與Java的比較。

無安全性

我們將首先探索Kotlin最有用的功能之一 - 它支援null安全性。

在Java中,任何物件都可以null這意味著必須在整個程式碼庫中新增執行時檢查以防止NullPointerException崩潰,這通常被語言設計者稱為十億美元的錯誤

靜態 類 使用者 {
    字串 名稱 ;
}

public  void  printUsername(User  user){
    如果(使用者。名字 !=  空){
        FOO(使用者。名。長度());
    }
}


在Kotlin中,物件的引用必須是可空的或非空的:

class  User(var  name:String ?)// name屬性可以為null
class  User(var  name:String)// name屬性不能為null


如果開發人員試圖將可以為空的物件傳遞給第二個類,則會發生編譯時錯誤。

安全呼叫運營商

以下對大多數Java開發人員來說非常熟悉。所述user引數可以是null,所以需要執行時檢查以確保NPE避免。

void  printUsername(User  user){
    如果(使用者。的getName()!=  空){
        FOO(使用者。的getName()長度());
    } else {
        foo(null); //提供一個null整數
    }
}

void  foo(整數 長度){}


Kotlin可以通過Safe Call 操作員簡化這一過程  如果name不為null,則其長度將作為引數傳遞。否則,將傳遞空引用。

fun  printUsername(user:User){
    FOO(使用者。名字?。長度)如果user.name為空//返回null
}

fun  foo(length:Int ?){}


或者,如果在值為null時執行程式碼沒有意義,我們可以使用let

fun  foo(nullableUser:User ?){
    nullableUser ?。let { printUsername(nullableUser)} //只打印非空使用者名稱
}
fun  printUsername(user:User){} // User是非空引用


類定義

與Java相比,Kotlin 非常簡潔。下面的類定義了三個欄位,getter和setter超過30行!

class  User {
    最終 字串 名稱 ;
    int  age  =  18 ;
    字串 地址 ;

    public  User(String  name,int  age,String  address){
        這個。name  =  name ;
        這個。年齡 =  年齡 ;
        這個。地址 =  地址 ;
    }

    public  String  getName(){
        返回 名稱 ;
    }

    public  int  getAge(){
        迴歸 年齡 ;
    }

    public  void  setAge(int  age){
        這個。年齡 =  年齡 ;
    }

    public  String  getAddress(){
        返回 地址 ;
    }

    public  void  setAddress(String  address){
        這個。地址 =  地址 ;
    }
}


在Kotlin中,我們可以使用一行程式碼實現相同的功能。

class  User(val  name:String,var  age:Int  =  18,var  address:String ?)


不可變引用也更容易。這只是從var關鍵字切換到的問題val

您可能已經注意到,對於Kotlin,可以為引數提供預設值。這意味著可以在Kotlin中消除Java模式,例如Builder模式 這也可以大大減少語法糖所需的程式碼量,例如公共API中的方法鏈。

資料類

如果我們類的主要目的是儲存資料,例如來自API的JSON有效負載,事情會變得更加簡潔。在Kotlin中,這些被稱為資料類

data  class  User(val  name:String,var  age:Int  =  18,var  address:String ?)


只需新增data關鍵字會自動生成equals()hashCode()toString(),並copy()為我們的類實現。省略了此類的等效Java實現,以節省讀者的理智和頻寬成本。

型別推斷

Kotlin使用型別推斷,這進一步增加了它的簡潔性。考慮一下這個Java類:

class  AbstractSingletonProxyFactoryBean {}

public  void  foo(){
    AbstractSingletonProxyFactoryBean  bean  =  new  AbstractSingletonProxyFactoryBean();
}


而Kotlin中的等價物看起來像這樣:

class  AbstractSingletonProxyFactoryBean

fun  foo(){
    val  bean  =  AbstractSingletonProxyFactoryBean()//自動推斷型別
}


功能

型別推斷***到整個語言中。在需要時可以是顯式的或隱式的,如下面定義相同函式的兩種方法所示:

int  add(int  a,int  b){
    返回 a  +  b ;
}


fun  add(a:Int,b:Int):Int { //顯式返回型別
    返回 a  +  b
}

fun  add(a:Int,b:Int)=  a  +  b  //推斷的返回型別


屬性

Kotlin Properties簡直太棒了。考慮以下Java類,它使用訪問器方法定義單個欄位:

class  Book {
    字串 作者 ;

    String  getAuthor(){
        迴歸 作者 ;
    }

    void  setAuthor(String  author){
        這個。作者 =  作者 ;
    }
}

書 書 =  新的 圖書();
書。setAuthor(“Kurt Vonnegut”);
系統。出。的println(書。getAuthor());


通過定義宣告author屬性的類,可以在Kotlin的四行中實現等效功能我們將自動生成我們的getter和setter:

            
           

相關推薦

Kotlin初學者指南

你好,世界 Kotlin是一種靜態型別語言,在JVM上執行,並且與現有Java程式碼具有100%的互操作性。對於大多數Java開發人員來說,下面的程式應該非常熟悉: 包 com。bugsnag。科特林 ; 公共 課 App {  &n

統計參數語音合成的初學者指南

專註 global 地址 .org 衡量 nco format represent feature 原文地址鏈接:https://shartoo.github.io/texttospeech/ 譯自:A beginners’ guide to statistical p

比特幣這麽火熱,看看這篇比特幣初學者指南

htm 愛好者 新增 wechat 如何 通過 中新 人的 說明 原文:ruanyifeng.com/blog/2018/01/bitcoin-tutorial.html 作者: 阮一峰 如有侵權,請及時聯系,謝謝! 2017 年對比特幣來說,是極為瘋狂的一年。

大O符號初學者指南

ner ont 計算機 org 增加 str 數據 contain 如果 原文地址:https://rob-bell.net/2009/06/a-beginners-guide-to-big-o-notation/ 計算機科學中,大O表示法被用來描述一個算法的性能或復雜度。

Nginx初學者指南

direct ror trie bsp ear sin explain err outside Beginner’s Guide Starting, Stopping, and Reloading ConfigurationConfiguration File’s S

深網與暗網初學者指南

信息 瀏覽器 付費 需要 必須 fire 經濟 提供商 invisible 一、深網 深網是互聯網上無法通過普通方法訪問到的內容,這些普通的方法包括使用谷歌、百度等搜索引擎。深網的內容主要是一些需要某些條件如註冊、付費,才能訪問的內容,如數據庫和某些服務。 下面是訪問深網的

Kotlin 實戰指南 | 如何在大型應用中新增 Kotlin

作者 / 宋立心 (Tiem Song), Android 軟體工程師   每次參加開發者大會,開發者最常問我的一個問題就是: "我該如何在現有 Android 應用中新增 Kotlin? 最好的方法是什麼?" 如果您工作的團隊規模較大,轉於用新的開發語言確

大O表示法初學者指南

大O表示法初學者指南 原文地址:https://rob-bell.net/2009/06/a-beginners-guide-to-big-o-notation/  電腦科學中,大O表示法被用來描述一個演算法的效能或複雜度。大O表示法可以用來描述一個演算法的最差情況,或者一個演算法執行

什麼是TOGAF?TOGAF初學者指南

TOGAF是The Open Group Architecture Framework的縮寫,它由The Open Group開發,The Open Group是一個非盈利的技術行業聯盟,它不斷更新和重申TOGAF。本文將著重於讓初學者熟悉TOGAF。 瞭解企業架構 在之前的文章中,我們深入

ACE教程001-4 使用ACE Toolkit的初學者指南

現在我們開始檢視logger物件。 // page04.html,v 1.14 2000/03/19 20:09:20 jcej Exp #ifndef _CLIENT_HANDLER_H #define _CLIENT_HANDLER_H /* A connectio

《PYTHON程式設計初學者指南》pdf

這本電子書是我偶然在網上買的別人的付費資源,現在免費分享給大家。 需要這本書pdf版的朋友,可掃文末二維碼加博主好友免費獲取。 //為了不影響排版,所以放在最後啦..... 以下是本書的一些介紹: 【作 者】(美)道森著 【形態項】 392 【出版項】 北

HTML5 & CSS3初學者指南(2) – 樣式化第一個網頁

介紹我們已經使用基本的 HTML 編寫了一個網頁。但是,寫出來的 HTML 程式碼的網頁看起來很平淡,沒有吸引力。如何改善這種很平淡的頁面呢?讓我們開始使用網頁的基本樣式來改善頁面效果,我們將會使用到

JavaScript原型初學者指南

前言 如果不好好的學習物件,你就無法在JavaScript中獲得很大的成就。它們幾乎是JavaScript程式語言的每個方面的基礎。在這篇文章中,您將瞭解用於例項化新物件的各種模式,並且這樣做,您將逐漸深入瞭解JavaScript的原型。 物件是鍵/值對。建立物件的最常用方法是使

AlphaGo的制勝祕訣:蒙特卡洛樹搜尋初學者指南

長久以來,計算機在圍棋領域不可能達到人類專家的水平一直是學術界的主流觀點。圍棋,被認為是人工智慧的“聖盃”——一個我們原本希望在未來十年努力攻克的里程碑。 二十年前,“深藍”就已經在國際象棋上超越了人類,二十年過去了,計算機卻依然無法在圍棋這一專案上戰勝人類。圍

【譯】GraphQL 初學者指南

原文地址:A Beginner’s Guide to GraphQL 原文作者:Leonardo Maldonado 專案倉庫:GraphQL-Guide-For-Beginner 譯者:Seymoe 譯者注:此文為本人第一篇譯文,本人作為無 GraphQL 使用背景的初

比特幣這麼火熱,看看這篇比特幣初學者指南

2017 年對比特幣來說,是極為瘋狂的一年。年初,一枚比特幣的價格不到 1,000 美元。在 1

主題模型初學者指南[Python]

引言 近年來湧現出越來越多的非結構化資料,我們很難直接利用傳統的分析方法從這些資料中獲得資訊。但是新技術的出現使得我們可以從這些輕易地解析非結構化資料,並提取出重要資訊。 主題模型是處理非結構化資料的一種常用方法,從名字中就可以看出,該模型的主要功能就是從文字資料中提

HTML5 & CSS3初學者指南(4) – Canvas使用

<script type="text/javascript"> var canvas=document.getElementById('mycanvas'); var context=canvas.getContext('2d'); var gradient=context.createLine

HTML5 & CSS3 初學者指南 – Canvas使用

什麼是 Canvas? HTML5 的 Canvas 元素使用 JavaScript 在網頁上繪製圖像。 畫布是一個矩形區域,你可以控制其每一畫素。 canvas 擁有多種繪製路徑、矩形、圓形、字元以及新增影象的方法。 建立 Canvas 元素 向 HTML5 頁面新增 C

SQL查詢初學者指南讀書筆記(一)關係資料庫和SQL介紹

PART I:Relational Databases and SQL Chapter2, Ensuring Your Database Structure IsSound. 資料庫設計準則 什麼是關係資料庫 RDBMS (A Relational database