1. 四種函數(shù)
package com.brain.day2
/**
* 四種函數(shù)
*/
fun main(args: Array<String>) {
saySomething()
println(saySomethingAndReturnString())
saySomethingAndInString("Jack")
println(saySomethingAndInStringReturnString("Tim"))
}
/**
* 沒有參數(shù)無返回值
*/
fun saySomething() {
println("Hello World")
}
/**
* 無參數(shù)有返回值科乎。
*/
fun saySomethingAndReturnString(): String {
println("saySomethingAndReturnString")
return "saySomethingAndReturnString"
}
/**
* 有參數(shù)掰伸,有返回值有序。
*/
fun saySomethingAndInStringReturnString(name: String): String {
println(name)
return "You Name $name"
}
fun saySomethingAndInString(name: String) {
println("You name : $name")
}
2. 字符串模版
package com.brain.day2
/**
* 字符串模版
* 格式 : "${變量}"
* 如果是單獨(dú)一個(gè)變量可以省略 “{}”
*/
fun main(args: Array<String>) {
val i1 = 12
val i2 = 13
val name = "Jack"
val age = 11
println("My name is $name , My age is $age")
println("i1 + i2 = ${i1 + i2}")
}
3. for循環(huán)
package com.brain.day2
/**
* For循環(huán)
*/
fun main(args: Array<String>) {
forInFunc()
forEachFunc()
}
/**
* 測(cè)試 for in
*/
fun forInFunc() {
val text = "0123456789"
// 1. 遍歷所有的元素摔蓝。
print("所有的元素 : ")
for (char in text) {
print(" $char")
}
println()
// 2. 帶有下標(biāo)的元素
for ((index, char) in text.withIndex()) {
print("text[${index}]=$char ")
}
println()
}
/**
* 高級(jí)ForEach
*/
fun forEachFunc() {
val text = "I am Jack"
// 1. 沒有index
text.forEach {
print("$it")
}
println()
// 2. 有 index
text.forEachIndexed { index, char ->
print("$index : $char ")
}
println()
}
4. 標(biāo)簽處返回
package com.brain.day2
/**
* s1和s2兩兩組合有幾種可能
* 1. 在循環(huán)開始出使用 “l(fā)abel@” 設(shè)置標(biāo)簽。使用"break@label" 跳出循環(huán)
*/
fun main(args: Array<String>) {
val text1 = "012345"
val text2 = "012345"
// 標(biāo)簽處跳轉(zhuǎn)爷恳。
label1@for (t1 in text1) {
label2@for (t2 in text2) {
if (t2 == '3') {
break@label2
}
}
if (t1 == '3') {
break@label1
}
}
}
5. range區(qū)間
package com.brain.day2
/**
* [1,100] 包含1 包含100
* [1,100) 包含1 不包含100 最大99
*/
fun main(args: Array<String>) {
//定義一個(gè)從1到100的數(shù)據(jù)類型
//java定義數(shù)組 或者集合 添加元素
val range = 1..100 // [1,100] 最大100
val range1 = 1 until 100 // [1,100) 最大99
val range2 = 10 downTo 1 // [10,1]
val range3 = 'a'..'z' // [a,z]
val range4 = 'a' until 'z' // [a,z]
val longRange = 1L..100L // [1, 100]
println(range2.last)
println(range1.last)
// 區(qū)間的遍歷可以采用For循環(huán)的任何一種形式颤诀。
range.forEach { }
range.forEachIndexed { index, i -> }
for (r in range) {
}
for ((index, r) in range.withIndex()) {
}
// 區(qū)間翻轉(zhuǎn)
val reversed = range.reversed()
}
6. if語句
package com.brain.day2
/**
* kotlin的if有返回值 {}最后一行為返回值
*/
fun main(args: Array<String>) {
val b = 20
val a = 15
println(findBig0(a, b))
println(findBig1(a, b))
println(findBig2(a, b))
}
/**
* 標(biāo)準(zhǔn)寫法, 注意只有一行可以省略大括號(hào)掂名。
*/
fun findBig0(a: Int, b: Int):Int {
if (a > b) {
return a
} else {
return b
}
}
/**
* 簡(jiǎn)化 1
*/
fun findBig1(a: Int, b: Int):Int {
// 類似三木運(yùn)算符
if (a > b) return a else return b
}
/**
* 簡(jiǎn)化 2
*/
fun findBig2(a: Int, b: Int):Int {
return if (a > b) a else b
}
7. 數(shù)組
package com.brain.day2
/**
* 相同數(shù)據(jù)類型元素的集合
*/
fun main(args: Array<String>) {
arrayTypeFunc()
accessArrayElements()
modifyArrayElements()
}
/**
* 數(shù)組元素的修改
* 1. 下標(biāo)
* 2. set(index, value)
*/
fun modifyArrayElements() {
//1. index
val intArrayOf = intArrayOf(12, 13, 11)
intArrayOf[0] = 0
// set
intArrayOf.set(1,1)
println(intArrayOf[0])
println(intArrayOf.get(1))
}
/**
* 遍歷數(shù)組可以使用For循環(huán)
*/
fun accessArrayElements() {
val intArrayOf = intArrayOf(12, 11, 10)
for (el in intArrayOf) {
}
for ((index, el) in intArrayOf.withIndex()) {
}
intArrayOf.forEach { }
intArrayOf.forEachIndexed { index, i -> }
}
/**
* 數(shù)組定義
*/
private fun arrayTypeFunc() {
val arr = arrayOf(1, 2)
//張三 李四 王五
//定義數(shù)組保存三個(gè)姓名
val array = arrayOf("張三", "李四", "王五")
//Boolean
//Byte
//Char
//Short
//Int
//Float
//Double
//Long
val booleanArrayOf = booleanArrayOf(true, false, true, false)
val byteArrayOf = byteArrayOf(0x00, 0x01)
val charArrayOf = charArrayOf('a', 'z')
val shortArrayOf = shortArrayOf(11, 12)
val intArrayOf = intArrayOf(1, 2, 3)
val floatArrayOf = floatArrayOf(12.11f, 13.11f)
val doubleArrayOf = doubleArrayOf(12.11, 112.22)
val longArrayOf = longArrayOf(12L, 12L)
}
8. when表達(dá)式
package com.brain.day2
/**
* when分支判斷語句
* switch類似 char short int 枚舉 字符串
* when表達(dá)式可以支持任意類型以及條件
*/
fun main(args: Array<String>) {
println(todo(12))
println(todo1(8))
println(todo3(2))
}
/**
* 高級(jí)用法3 返回值
*/
fun todo3(age: Int): String {
return when (age) {
in 1..5 -> {
"1..5"http:// 最后一行是返回之辙喂。
}
12 -> "12"
else -> "else"
}
}
/**
* 高級(jí)用法2 不用參數(shù)
*/
fun todo2(age: Int): String {
when {
age == 12 -> return "12"
age in 1..3 -> return "1..3"
else -> return "else"
}
}
/**
* 高級(jí)用法1捶牢, 區(qū)間
*/
fun todo1(age: Int): String {
when (age) {
in 1..6 -> return "1~6"
in 7..10 -> return "7~10"
12,13 -> return "12,13"
14 -> return "14"
else -> return "else"
}
}
/**
* 基礎(chǔ)用法
*/
fun todo(age:Int):String{
when(age) {
7 -> return "開始上小學(xué)了" //如果只有一行可以省略{}
12 -> {
return "開始上中學(xué)了"
}
15 -> {
return "開始上高中了"
}
18 -> {
return "開始上大學(xué)了"
}
else -> {
return "開始上社會(huì)大學(xué)"
}
}
}
9. 函數(shù)表達(dá)式
package com.brain.day2
/**
* kotlin 函數(shù)和對(duì)象都是一等公民 平等的
*/
fun main(args: Array<String>) {
println(add0(1, 1))
println(add1(1, 1))
println(add2(1, 1))
// 具名參數(shù)。
println(add3(b = 22))
// 可變參數(shù)
println(add4(1, 2, 3, 4))
}
/**
* 具名參數(shù) : 指定要賦值的參數(shù)
*/
fun addFunc0() {
add0(12, b = 12)
}
//----------------- 格式
/**
* 標(biāo)準(zhǔn)
*/
fun add0(a: Int, b: Int):Int {
return a + b
}
/**
* 高級(jí)1 : 如果只有一行代碼巍耗,可以省略大括號(hào)秋麸。
*/
fun add1(a: Int, b: Int): Int = a + b
/**
* 高級(jí)2 : 返回值也可以省略
*/
fun add2(a: Int, b: Int) = a + b
/**
* 默認(rèn)參數(shù)
*/
fun add3(a: Int = 12, b: Int) = a + b
/**
* 可變參數(shù)
*/
fun add4(vararg params: Int): Int {
var sum = 0
params.forEach {
sum += it
}
return sum
}
10. 異常處理
package com.brain.day2
/**
* 異常處理
*/
fun main(args: Array<String>) {
val a = 1
val b = 0
try {
// 發(fā)生異常了。
val c = a / b//ArithmeticException 分母為0
} catch (e: Exception) {
println("捕獲到異常了")
}finally {
println("都會(huì)執(zhí)行的")
}
}