來入門一下kotlin吧

Kotlin是什么?
Kotlin是一種在java虛擬機上運行的靜態類型的編程語言,被稱之為 Android 世界的Swift,由 JetBrains 設計開發并開源。

Kotlin的優勢!
Kotlin可以編譯成java字節碼,也可以編譯成JavaScript。方便在沒有java虛擬機的主機上運行。(據說學會Kotlin,你就是一名全棧工程師 (/偷笑))

并且的2017年的 Google I/O大會上,Google宣布將Kotlin作為Android的官方開發語言。(這就意味著,作為一名“資深‘的android開發工程師,以后就必須得會Kotlin了)

Kotlin相對于java開發android有什么優勢呢?(個人親身體驗)
拿輝哥的話說:一個字!簡潔!(一直用java寫android,當我用kotlin寫了android的一個Demo之后,暫且不討論它的底層等等,對于寫法上,就是簡潔!可能本章節體現的簡潔不是很明顯)

這一篇的入門,前提是你是有java基礎的情況下。這樣子你可以舉一反三,才會看懂一部分。所以......往下看吧

Kotlin的使用!(這里以Android Studio 為例進行演示)
一、安裝Kotlin插件
mac本用快捷鍵(command + ,)打開設置面板,找到Plugins 進行搜索 (如圖所示)

img_7bee4579de3e1bb53a661e3f52b8244e.png
image.png

找不到不要緊,點擊藍色超鏈接。


img_633f35e6b392fc2a76e49a99483fef05.png
image.png

找到kotlin進行下載,然后重啟Android studio即可。

二、開始將java代碼轉為kotlin(激動嗎,有點小激動呢)
我們來新建一個項目,(這里步驟較多,占用圖片資源大,但是很簡單,不會的童鞋可以問問android的同學,或者可以問小黃哦,小黃已經得我真傳,開始學習android了)

好了好了,廢話不多說,開始轉換。


img_404445fd1a8a5e969669d36d8ca3296f.png
image.png

像這種我們類名前面有藍色背景,黑色字體C的為java代碼,C代表的是 class。那么如何快速轉換為kotlin代碼呢?

img_65fe577975119ddb4d50154f75420d3e.png
image.png

我們找到頂部菜單欄的code選項,并且選中最下方的 Convert Java File to Kotlin File 開始轉換

轉換完成后,點擊右上角 Configure,然后默認為最新版本直接點擊 OK即可。

img_b8e8c0b83e617d8819c0f1dd333556b1.png
image.png

ok,完美轉換

package kotlindemo.yjy.com.mykotlindemoimport android.support.v7.app.AppCompatActivity
import android.os.Bundleclass MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)}
}

可能你還感覺并沒有多大的改變,沒關系,我們慢慢往下看。

三、開始簡單實用kotlin開發android吧!(這里東西較多,會有與java開發作比對的部分)
1.來一句最簡單的,hello world吧!

先來看看java代碼:

public class MainTestActivity extends Activity {private TextView textView;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initview();}private void initview() {textView = findViewById(R.id.main_tv);textView.setText("hello world!");}
}

接下來是kotlin代碼:

class MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)initview()}fun initview(): Unit {main_tv.setText("hello world")}
}

kotlin代碼免掉了findviewbyid的方法,這個依賴在創建項目時勾選kotlin會自動導入,或者手動導入都可以。

依賴代碼放這里:(我想懂android的都知道怎么用,你懂android嗎? /偷笑)

apply plugin: 'kotlin-android-extensions'

2.來一個比較大小的代碼
先來看看java代碼:

private int max(int num1, int num2) {if (num1 > num2) {return num1;} else {return num2;}
}

再來看看kotlin代碼:

fun max(num1: Int, num2: Int): Int = if (num1 > num2) num1 else num2

一樣的含義,也許你并不感覺kotlin有簡潔多少,少許代碼感覺不出來,那么繼續往后看。

3.來看一下返回String類型的時候吧()

這次我們先看看kotlin代碼:

fun getstr(str: String): String = str?.length.toString()

//kotlin為我們提供了避免string類型空指針,這行代碼的意思是:str為不為null?為null就返回str的length,不為null就返回str原來的值。

再來看看java代碼:

private String getStr(String str) {return str;
}

//上面的代碼一看,直接返回,如果str為空怎么辦呢,java會給我們直接報空指針異常。要是為了避免空指針異常就得用下面的改進版。

private String getStr(String str) {if (str != null) {return str;} else {return "";}
}

用改進版的代碼跟kotlin一比,這次終于知道簡潔在哪里了吧。

4.來看看變量的定義與使用

來看看kotlin代碼:


//定義string類型的變量,
var i = "a"
//或者
var i1: String = "a"
//定義int類型的變量
var a = 1
//或者
var a1: Int = 3
//表示不可修改的參數(類似于java的final)
val c1 = "abc"

可以看出,koltin可以不指定類型,當kotlin不指定類型的時候,kotlin會自己轉義,有引號的默認為string,沒有引號的數字會自動轉成int。

再來看看java代碼:

//定義String類型的變量
String i = "a";
//定義int類型的變量
int a = 1;
//修飾不可修改的參數。或者說只可以賦值一次。
final String c1 = "abc";

不難看出,java的代碼所有的變量都必須指定一個類型,因為java是強類型語音,這就是為什么我們跟后臺同學們調試參數的過程中總是出現問題的原因。如果改用kotlin會不會這個問題就少了呢,我也不好說,哈哈。

恭喜你已經看完了,看完之后別人問你會kotlin嗎?你可以自豪的說,我已經入門了。

這一節課就到這里,學習語言最基礎的東西。 后續還會更新內容,有更簡潔的東西。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277416.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277416.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277416.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

apache2 配置php,Windows配置PHP5與Apache2

windows下安裝和配置PHP5與Apache2真是比linux下難多了,唉。這里用的是PHP Version 5.2.1和Apache HTTP Server 2.2.4,都是從官方網站下的。1. 下載安裝,不多說了,apache一路按下去就ok,php連按都不用,解壓…

ReactNative 觸摸事件處理

ReactNative觸摸事件處理 對RN觸摸事件的捕獲與冒泡機制的理解 組件A、B、C結構 組件A組件B組件C 捕獲、冒泡機制 sequenceDiagram A->>A: 是否捕獲?若是則停止向下一級傳遞 A->>B: B->>B: 是否捕獲?若是則停止向下一級傳遞 B->&g…

CISCO網絡故障排錯命令總結分享

一、故障處理命令 1、show命令: 1) 全局命令: show version ;顯示系統硬件和軟件版本、DRAM、Flash show startup-config ;顯示寫入NVRAM中的配置內容 show running-config ;顯示當前運行的配置內容 show b…

java input回車,用java怎樣編寫加減乘除,從鍵盤輸入,例如:1+2按回車得到

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓import org.junit.Test;import java.util.regex.Matcher;import java.util.regex.Pattern;public class TestCalc {Testpublic void testCalculator() {String input "11";//輸入String rule "(\\d\\.?\\d*)([\\…

Java中數組在內存中的存放原理?

版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/yangyong0717/article/details/79165685Java中數組被實現為對象,它們一般都會因為記錄長度而需要額外的內存。對于一個原始數據類型的數組,一般需要24…

程序員如何面試才能拿到offer

一、概述 面試,難還是不難?取決于面試者的底蘊(氣場技能)、心態和認知及溝通技巧。面試其實可以理解為一場聊天和談判,在這過程中有心理、思想上的碰撞和博弈。其實你只需要搞清楚一個邏輯:“面試官為什么會…

php 跨區域,如何構造PHP的內容包括在非安全(http://)和安全(https://)區域以及跨多個目錄使用?...

只需使用//example.com/foo.blah即可.< img id “sample-image”src “// /media/sample-image.png”/>很明顯,HTTP是協議,但存在其他協議,如GOPHER,HTTPS,FTP等……而不是在gopher URL gopher&#xff1a;//example.com上,您只需鏈接到//example.com,協議就可以在沒有它…

Generative Adversarial Learning Towards Fast Weakly Supervised Detection(CVPR2018)閱讀筆記

弱監督目標檢測相對于一般的目標檢測任務來說&#xff0c;訓練樣本不需要實例級別的標注&#xff0c;只需要圖片級別的標注&#xff0c;即告訴圖片中有什么而不需標注位置信息&#xff0c;這種標注圖片容易獲取&#xff0c;能節省標注時間及精力。現有的大部分方法在進行若監督…

如何添加JWT生成的token在請求頭中

前言 在我們使用JWT來做用戶的驗證時&#xff0c;我們登陸生成對應的token,并加入到請求的參數中發送到后臺提供相關的權限校驗。這個時候我們需要使用到傳遞請求頭參數傳遞的問題&#xff0c;下面是兩種方式。 1.ajax提交方式 1&#xff09;.方法一&#xff1a; $.ajax({ type…

Gradle 使用技巧(二) - SO/NDK過濾

引言 作為一個Android開發人員&#xff0c;so對于我們來講是極其常見的&#xff0c;各種大廠的SDK中都包含著各種各樣的so&#xff0c;而so也是apk瘦身的重要一環&#xff0c;減少so平臺的數量&#xff0c;可以極大限度的減少apk的大小。 Android 中的so 先看一張官方的圖&…

java兩個數之間質數求法,求任意兩個整數之間質數的個數的代碼!!!(新手編寫)...

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓/*** Title:Calculate acount of prime number between preNum and rearNum;* Author: public* Time&#xff1a;2008.12.5 21:09:35*/import java.awt.*;import java.awt.event.*;class Arithmetic{//將計算質數個數的類封裝在此類…

VMware——安裝CentOS

VMware——安裝CentOS 摘要&#xff1a;本文主要記錄了在VMware虛擬機里安裝CentOS的步驟。 下載操作系統 可以從下面的鏡像地址去下載各種版本的CentOS&#xff0c;此次安裝使用的版本是7.2&#xff1a; http://archive.kernel.org/centos-vault/ http://mirror.nsc.liu.se/ce…

django1.4.9 OMserverweb站點管理

1.項目setting.py配置&#xff1a; 2.項目url.py配置&#xff1a; 錯誤提示&#xff1a;auth_user這個表沒有創建&#xff0c;那個因為,admin站點默認數據表需要遷移。執行python manage.py syncdb 會創建所有應用程序需要的數據庫表4.接下來就是根據要求一步一步來&#xff1a…

matlab讀取氣象數據,基于MATLAB實現3種氣象數據的讀取和繪圖

第 29卷第 4期 2007年 11月 廣 東 氣 象 GuangdongMeteorology Vol. 29  No. 4 November 2007 基于 MATLAB實現 3種氣象數據的讀取和繪圖 劉  峰 , 劉  娟 , 李  萍 , 林  智 (民航中南空中交通管理局氣象中心 ,廣東廣州  510406)   摘  要 :針對 M ICAPS、 GR IB和…

[USACO17JAN]Promotion Counting 題解

前言 巨佬說:要有線段樹&#xff0c;結果蒟蒻打了一棵樹狀數組... 想想啊&#xff0c;奶牛都開公司當老板了&#xff0c;我還在這里碼代碼&#xff0c;太失敗了。話說奶牛開個公司老板不應該是FarmerJohn嗎&#xff1f; 題解 剛看到這道題的時候竟然沒有想到深搜&#xff0c;然…

牛客小白月賽6 水題 求n!在m進制下末尾0的個數 數論

鏈接&#xff1a;https://www.nowcoder.com/acm/contest/135/C來源&#xff1a;牛客網 題目描述 其中&#xff0c;f(1)1;f(2)1;Z皇后的方案數&#xff1a;即在ZZ的棋盤上放置Z個皇后&#xff0c;使其互不攻擊的方案數。 輸入描述: 輸入數據共一行&#xff0c;兩個正整數x,m&am…

centos php7 apcu,centos php5.4 升級 php7

接上篇&#xff0c;edusoho需要php5.5以上版本&#xff0c;于是需要升級本地phpphp是通過yum默認安裝的。以下安裝參考 linkhttps://blog.csdn.net/u012569217/article/details/77506902因此先查看本地php版本php -v檢查當前php的安裝包yum list installed | grep php將本地php…

子類訪問父類和方法覆寫

子類不能直接訪問父類的私有成員&#xff1b; 但是子類可以調用父類中的非私有方法來間接訪問父類的私有成員。 Person類中有私有字段name,Student繼承Person new Sudent().name; new Student().getName(); √ 子類拓展父類&#xff08;子類是父類的一種特殊…

面向對象筆試題練習一

1.接口只能被類實現&#xff0c;類不能繼承接口&#xff0c;遵循單繼承多實現原則&#xff1b; 2.靜態方法中不能引用其外部的非靜態成員&#xff1b; 3.實現 Runnable 接口&#xff0c;接口中有一個抽象方法 run&#xff0c;實現類中重寫該方法&#xff1b; 4.public修飾的方法…

curl 升級 php,將命令行cURL轉換為PHP cURL

我從來沒有做過任何卷曲&#xff0c;所以需要一些幫助。我試圖從例子中解決這個問題&#xff0c;但無法理解它&#xff01;我有一個curl命令&#xff0c;我可以從linux(ubuntu)命令行成功運行&#xff0c;該命令行通過api將文件放入wiki。我需要將這個curl命令合并到我正在構建…