Kotlin(一):基础语法


适合有java或其他语言基础。

变量常量数组

常量

定义常量需要使用val关键字,和java中final关键字类似

val name : String = "XXXX"

由此可知kotlin的数据类型声明在标识符之后 <标识符>:<类型>

变量

定义变量则使用var关键字

var name : String = "XXXX"

1.常量和变量都可以没有初始值,但是需要在引用前进行初始化
2.kotlin支持类型的自动推断,因此在声明变量/常量可以不指定类型

var age = 2
var address = "anywhere"
数组

常见类型的数组声明方式

// 第一种
var long_array:LongArray = longArrayOf(1, 2, 3)
var float_array:FloatArray = floatArrayOf(1.0f, 2.0f, 3.0f)
var double_array:DoubleArray = doubleArrayOf(1.0, 2.0, 3.0)
var boolean_array:BooleanArray = booleanArrayOf(true, false, true)
var char_array:CharArray = charArrayOf('a', 'b', 'c')
// 第二种
var int_array:Array<Int> = arrayOf(1, 2, 3)
var long_array:Array<Long> = arrayOf(1, 2, 3)
var float_array:Array<Float> = arrayOf(1.0f, 2.0f, 3.0f)
var double_array:Array<Double> = arrayOf(1.0, 2.0, 3.0)
var boolean_array:Array<Boolean> = arrayOf(true, false, true)
var char_array:Array<Char> = arrayOf('a', 'b', 'c')
// 字符串数组有些不同

var string_array:Array<String> = arrayOf("I", "Love", "Kotlin")
Null检查机制
//类型后面加?表示可为空
var age: String? = "23" 
//抛出空指针异常
val ages = age!!.toInt()
//不做处理返回 null
val ages1 = age?.toInt()
//age为空返回-1
val ages2 = age?.toInt() ?: -1

函数

kotlin中函数的定义需使用fun关键字

fun sum(a: Int, b: Int): Int {   // Int 参数,返回值 Int
    return a + b
}

没有返回值的函数可以有两种定义方式:

// 第一种 使用Unit关键字
fun main(args:Array<String>):Unit{
   print("hello")
}

// 第二种 省略Unit关键字
fun main(args:Array<String>){
   print("hello")
}
可变长参数

函数的变长参数可以使用vararg关键字

fun main(args:Array<String>):Unit{
    funA(1,2,3,4,5,6,7,8)
}
fun funA(vararg numlist:Int){
    for(i in numlist){
        print(i)
    }
}

输出结果:12345678

lambda
fun main(args: Array<String>) {
    val sumLambda: (Int, Int) -> Int = {x,y -> x+y}
    println(sumLambda(1,2))  // 输出 3
}

定义了一个sumLambda函数 (Int, Int) 是参数,-> 后面就是函数体

条件表达式

if

kotlin if条件的使用和java一样
但是这里有一个语法:使用if实现三元运算符

val c = if(a<b)a else b
when

when的时候和switch十分类似

    var index : Int  = 2
    when(index){
        1-> println("1")
        2-> println("2")
        3-> println("3")
        else->{
            print("other")
        }
    }
  • 其中1-> 可以视为case 1:
  • else 则是switch的defualt

但是和switch不同的是
1.可以使用

1,3 -> print("1 or 3")

相当于 case语句不加break

switch(index):
case 1://todo...
  case 3://todo...
  break;
  case 2://todo
  break;

此外还可以使用

    in 1..10 -> print("x is in the range")
    in validNumbers -> print("x is valid")
    !in 10..20 -> print("x is outside the range")

in 和 !in 做范围匹配

循环控制表达式

区间

区间表达式由具有操作符形式 … 的 rangeTo 函数辅以 in 和 !in 形成。

// 从1遍历到4 输出“1234”
for (i in 1..4) print(i) 
// 什么都不输出
for (i in 4..1) print(i) 
// 指定步长
for (i in 1..4 step 2) print(i)
// 倒序  输出“42”
for (i in 4 downTo 1 step 2) print(i) 

// 使用 until 函数排除结束元素   10 不会被输出
for (i in 1 until 10) { 
     println(i)
}
for 循环

kotlin 里的for循环就完全是foreach了

for (item: Int in ints) {
    // ……
}

// 这里输出的是intArr的索引从0到8
var intArr:Array<Int> = arrayOf(1,4,5,1,2,3,7,1,2)
for(i in intArr.indices){
   println(i)
}

// 使用库函数withIndex 实现同时取索引和值
for ((index, value) in array.withIndex()) {
    println("the element at $index is $value")
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值