kotlin基本語法

<pre>

classMainTestActivity : Activity() {
? ?  //當(dāng)某個(gè)變量的值可以為null的時(shí)候,必須在聲明處的類型后添加?來標(biāo)識(shí)該引用可為空锈拨。
? ?  override fun onCreate(savedInstanceState: Bundle?) {
? ? ? ?  super.onCreate(savedInstanceState)
? ? ? ?  setContentView(R.layout.main_test_activity)
? ? ? ?  kotlin_test.setText("kotlin測試")
? ? ? ?  
? ? ? ?  valtestButton= findViewById(R.id.kotlin_test_btn) as Button
? ? ? ?  testButton.setText("進(jìn)行kotlin測試")
? ? ? ?  testButton.setOnClickListener {
? ? ? ? ? ?  Toast.makeText(this,"kotlin點(diǎn)擊事件",Toast.LENGTH_LONG).show()
? ? ? ?  }

? ? ? ?  //變量聲明:
? ? ? ?  //可以用關(guān)鍵字var聲明為可變的秆麸,否則使用只讀關(guān)鍵字val 
? ? ? ?  //一次賦值(只讀)的局部變量:
? ? ? ?  //int類型常量定義
? ? ? ?  val aConstant: Int =1000
? ? ? ?  val bConstant: Int =200
? ? ? ?  val cConstant: Int =300
? ? ? ?  
? ? ? ?  //可變變量:
? ? ? ?  var dVariable: Int
? ? ? ?  dVariable=5

? ? ? ?  Log.d("alen","sum is " + sum(aConstant,bConstant))
? ? ? ?  Log.d("alen","printSum is " + printSum(aConstant,bConstant,cConstant))

? ? ? ?  stringTemplate()
         printValue("4","6")
         printValue("4","")
         val length= getStringLength("nihao")
         Log.d("alen","length is " +length)
         loopForTest1()
         loopForTest2()
         whileForTest()
         Log.d("alen","msg is " + whenForTest("hello"))
         Log.d("alen","msg is " + whenForTest(1))
         mapForTest()
         setForDataClassTest()}?  
? ?  }
}
//使用字符串模板
fun stringTemplate(): Unit {
? ? var arg: Int =1
    val s1= "arg is$arg"
    Log.d("alen","s1 is " +s1)

    arg=2
    //模板中的任意表達(dá)式:
    var s2= "${s1.replace("is","was")}, but now arg is$arg"
    Log.d("alen","s2 is " +s2)
}
// 帶有兩個(gè)Int參數(shù)允跑、返回Int的函數(shù)
funsum(arg1: Int,arg2: Int): Int {
? ? returnarg1 + arg2
}
// 函數(shù)返回?zé)o意義的值,Unit返回類型可以省略
funprintSum(arg1: Int,arg2: Int,arg3: Int): Unit {
? ? Log.d("alen","sum is " + (arg1 + arg2 + arg3))
}
// 把字符串轉(zhuǎn)為Int
fun parseInt(str: String): Int? {
? ? // try表達(dá)式
? ? try{
? ? ?  if(str !=null) {
? ? ? ? ?  returnstr.toInt()
? ? ?  }
? ? } catch (e: NumberFormatException) {
? ? ?  return null}return null
? ? }
}

funprintValue(str1: String,str2: String) {
? ? val result1: Int? = parseInt(str1)
? ? valr esult2: Int? = parseInt(str2)
? ? if(result1!=null&&result2!=null) {
? ? ?  Log.d("alen","value is " +result1*result2)
? ? } else {
? ? ?  Log.d("alen"," '$result1' or '$result2' is null")
? ? }
}
// 打印字符串的長度
fun getStringLength(obj: Any): Int? {
? ? if(obj is String) {
? ? ? ? return obj.length
? ? }
? ? return null
}
// 迭代
fun loopForTest1() {
? ? val items=listOf("item1","item2","item3")
? ? for(item in items) {
? ? ? ? Log.d("alen","item is " +item);
? ? }
}
// 通過索引值進(jìn)行循環(huán)
fun loopForTest2() {
? ? val items=listOf("item1","item2","item3")
? ? //使用in運(yùn)算符來檢測某個(gè)數(shù)字是否在指定區(qū)間內(nèi):
? ? for(index in items.indices) {
? ? ? ? Log.d("alen","item index is$index,value is${items[index]}")
? ? }
? ? 
? ? if(-1 !in items.indices) {
? ? ?  Log.d("alen","-1 not in range")
? ? }
? ? 
? ? // 從9到0開始迭代莽使,步長為3
? ? // 區(qū)間表達(dá)式由具有操作符形式..的rangeTo函數(shù)輔以in和!in形成凑懂。
? ? // downTo()函數(shù) 倒序迭代數(shù)字
? ? // step()函數(shù) 以不等于1的任意步長迭代數(shù)字
? ? for(x in 9 downTo 0 step 3) {
? ? ? ? Log.d("alen","x is " +x)
? ? }

? ? //創(chuàng)建一個(gè)不包括其結(jié)束元素的區(qū)間腥椒,可以使用until函數(shù):
? ? for(x in 1 until 10) {
? ? ? ? // i in [1, 10)排除了10
? ? ? ? Log.d("alen","until x is " +x)
? ? }
}
// while循環(huán)測試
fun whileForTest() {
? ? val items=listOf("apple","item2","banana")
? ? items.isEmpty()
? ? Log.d("alen","items size is " +items.size)
? ? //區(qū)間range
? ? Log.d("alen","items indices is " +items.indices)
? ? if(items.size >2) {
? ? ?  Log.d("alen","items index 2 is " +items.get(2))
? ? }

? ? Log.d("alen","items last index is " +items.lastIndex)
? ? //使用in運(yùn)算符來判斷集合內(nèi)是否包含某實(shí)例:
? ? when {
? ? ? ? "apple"initems-> {
? ? ? ? ? ? ? Log.d("alen","items contain apple")
? ? ? ?  }

? ? ? ? "orange"!initems-> {
? ? ? ? ? ? ? Log.d("alen","items do not contain orange")
? ? ? ? }
? ? }
}
// when條件測試
fun whenForTest(obj: Any): String =
? ? ? when(obj) {
? ? ? ? ? 1-> {
? ? ? ? ? ? ?  Log.d("alen","test one")
? ? ? ? ? ? ?  "one"
? ? ? ? ? }
? ? ? ? ? "hello" -> "Greeting"
? ? ? ? ? isLong -> "Long"
? ? ? ? ? !isString -> "Not a string"
? ? ? ? ? else-> "Unkonwn"
? ? ? }
// map測試
fun mapForTest() {
? ? val map=mapOf("a"to"1","b"to"2","c"to"3")
? ? Log.d("alen","map key is a,value is " +map["a"])
? ? for(item in map) {
? ? ? ? Log.d("alen","map key is " +item.key + ",value is " +item.value)
? ? }
}
// set測試
// set
// 1. Set中沒有重復(fù)的對(duì)象
// 2. Set中對(duì)象不按特定的方式排序
//判斷兩個(gè)對(duì)象的是否重復(fù)標(biāo)準(zhǔn)是hashCode()和equals()兩個(gè)參考值勾笆,
//也就是說只有兩個(gè)對(duì)象的hashCode值一樣與equals()為真時(shí)敌蚜,才認(rèn)為是相同的對(duì)象
// fun hashSetOf(vararg elements: T): java.util.HashSet
// fun linkedSetOf(vararg elements: T): java.util.LinkedHashSet
// sortedSetOf(comparator: java.util.Comparator, vararg elements: T): java.util.TreeSet
// fun sortedSetOf(vararg elements: T): java.util.TreeSet
funsetForDataClassTest() {
    // Book是一個(gè)data class,用來做data model使用
? ? val bookA= Book("A",20,"AA")
? ? val bookB= Book("B",30,"BB")
? ? val bookC= Book("C",20,"CC")
? ? val bookD= Book("D",50,"DD")
? ? val bookE= Book("B",30,"EE")

? ? val set=setOf(bookA,bookB,bookC,bookD)
? ? for(iteminset) {
? ? ? ? Log.d("alen","item$item, hashCode${item.hashCode()}")
? ? }

? ? Log.d("alen","--------------------------")

? ? val mutalbeSet=mutableSetOf(bookA,bookB,bookC,bookD,bookE)

? ? for(item in mutalbeSet) {
? ? ? ? Log.d("alen","item is$item, hashCode is${item.hashCode()}")
? ? }

? ? mutalbeSet.add(Book("甲乙丙丁",50,"EE"))
? ? Log.d("alen","remove B value is " +mutalbeSet.remove(bookB))
? ? Log.d("alen","remove E value is " +mutalbeSet.remove(bookE))

? ? Log.d("alen","--------------------------")

? ? for(item in mutalbeSet) {
? ? ? ? Log.d("alen","item is$item, hashCode is${item.hashCode()}")
? ? }
}

</pre>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末窝爪,一起剝皮案震驚了整個(gè)濱河市弛车,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蒲每,老刑警劉巖纷跛,帶你破解...
    沈念sama閱讀 212,657評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異邀杏,居然都是意外死亡贫奠,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,662評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門望蜡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來唤崭,“玉大人,你說我怎么就攤上這事泣特『评眩” “怎么了?”我有些...
    開封第一講書人閱讀 158,143評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵状您,是天一觀的道長勒叠。 經(jīng)常有香客問我,道長膏孟,這世上最難降的妖魔是什么眯分? 我笑而不...
    開封第一講書人閱讀 56,732評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮柒桑,結(jié)果婚禮上弊决,老公的妹妹穿的比我還像新娘。我一直安慰自己魁淳,他們只是感情好飘诗,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,837評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著界逛,像睡著了一般昆稿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上息拜,一...
    開封第一講書人閱讀 50,036評(píng)論 1 291
  • 那天溉潭,我揣著相機(jī)與錄音净响,去河邊找鬼。 笑死喳瓣,一個(gè)胖子當(dāng)著我的面吹牛馋贤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播畏陕,決...
    沈念sama閱讀 39,126評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼配乓,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蹭秋?” 一聲冷哼從身側(cè)響起扰付,我...
    開封第一講書人閱讀 37,868評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎仁讨,沒想到半個(gè)月后羽莺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,315評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡洞豁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,641評(píng)論 2 327
  • 正文 我和宋清朗相戀三年盐固,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片丈挟。...
    茶點(diǎn)故事閱讀 38,773評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡刁卜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出曙咽,到底是詐尸還是另有隱情蛔趴,我是刑警寧澤,帶...
    沈念sama閱讀 34,470評(píng)論 4 333
  • 正文 年R本政府宣布例朱,位于F島的核電站孝情,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏洒嗤。R本人自食惡果不足惜箫荡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,126評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望渔隶。 院中可真熱鬧羔挡,春花似錦、人聲如沸间唉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,859評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽呈野。三九已至镀赌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間际跪,已是汗流浹背商佛。 一陣腳步聲響...
    開封第一講書人閱讀 32,095評(píng)論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留姆打,地道東北人良姆。 一個(gè)月前我還...
    沈念sama閱讀 46,584評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像幔戏,于是被迫代替她去往敵國和親玛追。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,676評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容

  • 1.定義函數(shù) 帶有兩個(gè) Int 參數(shù)闲延、返回 Int 的函數(shù): 將表達(dá)式作為函數(shù)體痊剖、返回值類型自動(dòng)推斷的函數(shù): 函數(shù)...
    正義吖閱讀 558評(píng)論 0 2
  • 該文為個(gè)人學(xué)習(xí)筆記,如有錯(cuò)誤垒玲,請(qǐng)各位大佬指導(dǎo)~~~ 針對(duì)于一些未具體說明知識(shí)點(diǎn)陆馁,后續(xù)會(huì)進(jìn)行補(bǔ)充。 知識(shí)點(diǎn)可能會(huì)有點(diǎn)...
    半截鉛筆閱讀 240評(píng)論 0 0
  • 包聲明 如: 引入類 與Java沒啥區(qū)別 有多個(gè)包會(huì)默認(rèn)導(dǎo)入到每個(gè) Kotlin 文件中: 函數(shù)定義 一般函數(shù) 函...
    郎官人閱讀 406評(píng)論 1 0
  • 帶你快速入門合愈,讀懂Kotlin基本語法~ 基本語法 定義包 包應(yīng)該在源文件的頭部聲明: 不需要匹配目錄和包:源文件...
    AeolusFei閱讀 685評(píng)論 0 2
  • 上篇介紹了Kotlin的特點(diǎn)以及其在Android Studio上的配置步驟叮贩,下面接著記錄一些Kotlin的基本語...
    ArsenicBing閱讀 619評(píng)論 0 2