1. 四种函数
package com.brain.day2
/**
* 四种函数
*/
fun main(args: Array<String>) {
saySomething()
println(saySomethingAndReturnString())
saySomethingAndInString("Jack")
println(saySomethingAndInStringReturnString("Tim"))
}
/**
* 没有参数无返回值
*/
fun saySomething() {
println("Hello World")
}
/**
* 无参数有返回值。
*/
fun saySomethingAndReturnString(): String {
println("saySomethingAndReturnString")
return "saySomethingAndReturnString"
}
/**
* 有参数,有返回值。
*/
fun saySomethingAndInStringReturnString(name: String): String {
println(name)
return "You Name $name"
}
fun saySomethingAndInString(name: String) {
println("You name : $name")
}
2. 字符串模版
package com.brain.day2
/**
* 字符串模版
* 格式 : "${变量}"
* 如果是单独一个变量可以省略 “{}”
*/
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循环
package com.brain.day2
/**
* For循环
*/
fun main(args: Array<String>) {
forInFunc()
forEachFunc()
}
/**
* 测试 for in
*/
fun forInFunc() {
val text = "0123456789"
// 1. 遍历所有的元素。
print("所有的元素 : ")
for (char in text) {
print(" $char")
}
println()
// 2. 带有下标的元素
for ((index, char) in text.withIndex()) {
print("text[${index}]=$char ")
}
println()
}
/**
* 高级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. 标签处返回
package com.brain.day2
/**
* s1和s2两两组合有几种可能
* 1. 在循环开始出使用 “label@” 设置标签。使用"break@label" 跳出循环
*/
fun main(args: Array<String>) {
val text1 = "012345"
val text2 = "012345"
// 标签处跳转。
label1@for (t1 in text1) {
label2@for (t2 in text2) {
if (t2 == '3') {
break@label2
}
}
if (t1 == '3') {
break@label1
}
}
}
5. range区间
package com.brain.day2
/**
* [1,100] 包含1 包含100
* [1,100) 包含1 不包含100 最大99
*/
fun main(args: Array<String>) {
//定义一个从1到100的数据类型
//java定义数组 或者集合 添加元素
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)
// 区间的遍历可以采用For循环的任何一种形式。
range.forEach { }
range.forEachIndexed { index, i -> }
for (r in range) {
}
for ((index, r) in range.withIndex()) {
}
// 区间翻转
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))
}
/**
* 标准写法, 注意只有一行可以省略大括号。
*/
fun findBig0(a: Int, b: Int):Int {
if (a > b) {
return a
} else {
return b
}
}
/**
* 简化 1
*/
fun findBig1(a: Int, b: Int):Int {
// 类似三木运算符
if (a > b) return a else return b
}
/**
* 简化 2
*/
fun findBig2(a: Int, b: Int):Int {
return if (a > b) a else b
}
7. 数组
package com.brain.day2
/**
* 相同数据类型元素的集合
*/
fun main(args: Array<String>) {
arrayTypeFunc()
accessArrayElements()
modifyArrayElements()
}
/**
* 数组元素的修改
* 1. 下标
* 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))
}
/**
* 遍历数组可以使用For循环
*/
fun accessArrayElements() {
val intArrayOf = intArrayOf(12, 11, 10)
for (el in intArrayOf) {
}
for ((index, el) in intArrayOf.withIndex()) {
}
intArrayOf.forEach { }
intArrayOf.forEachIndexed { index, i -> }
}
/**
* 数组定义
*/
private fun arrayTypeFunc() {
val arr = arrayOf(1, 2)
//张三 李四 王五
//定义数组保存三个姓名
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表达式
package com.brain.day2
/**
* when分支判断语句
* switch类似 char short int 枚举 字符串
* when表达式可以支持任意类型以及条件
*/
fun main(args: Array<String>) {
println(todo(12))
println(todo1(8))
println(todo3(2))
}
/**
* 高级用法3 返回值
*/
fun todo3(age: Int): String {
return when (age) {
in 1..5 -> {
"1..5"// 最后一行是返回之。
}
12 -> "12"
else -> "else"
}
}
/**
* 高级用法2 不用参数
*/
fun todo2(age: Int): String {
when {
age == 12 -> return "12"
age in 1..3 -> return "1..3"
else -> return "else"
}
}
/**
* 高级用法1, 区间
*/
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"
}
}
/**
* 基础用法
*/
fun todo(age:Int):String{
when(age) {
7 -> return "开始上小学了" //如果只有一行可以省略{}
12 -> {
return "开始上中学了"
}
15 -> {
return "开始上高中了"
}
18 -> {
return "开始上大学了"
}
else -> {
return "开始上社会大学"
}
}
}
9. 函数表达式
package com.brain.day2
/**
* kotlin 函数和对象都是一等公民 平等的
*/
fun main(args: Array<String>) {
println(add0(1, 1))
println(add1(1, 1))
println(add2(1, 1))
// 具名参数。
println(add3(b = 22))
// 可变参数
println(add4(1, 2, 3, 4))
}
/**
* 具名参数 : 指定要赋值的参数
*/
fun addFunc0() {
add0(12, b = 12)
}
//----------------- 格式
/**
* 标准
*/
fun add0(a: Int, b: Int):Int {
return a + b
}
/**
* 高级1 : 如果只有一行代码,可以省略大括号。
*/
fun add1(a: Int, b: Int): Int = a + b
/**
* 高级2 : 返回值也可以省略
*/
fun add2(a: Int, b: Int) = a + b
/**
* 默认参数
*/
fun add3(a: Int = 12, b: Int) = a + b
/**
* 可变参数
*/
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 {
// 发生异常了。
val c = a / b//ArithmeticException 分母为0
} catch (e: Exception) {
println("捕获到异常了")
}finally {
println("都会执行的")
}
}
网友评论