您的位置:首页 > 其它

kotlin的基础语法

2017-12-16 09:52 369 查看
  1.定义包名:与java定义包名一样,在源文件的开头定义包名: package my.demo import java.util.*2.定义函数:与java定义函数的区别在于:kotlin在定义函数的时候要加个fun关键词,函数的返回值前后不同,java的在前面,kotlin的在后面 java:    private int getResult(int a,int b){ return a+b;} kotlin:  private getResult(a:Int,b:int):Int{ return a+b}如果一个函数只有一个并且是表达式函数体并且是返回类型自动推断的话,可以直接这样写: fun getResult(a:Int,b:Int) = a+b  //这里的函数没有写返回值,以为kotlin会自动判断返回值类型如果函数返回一个无意义的值,相当于Java的void,则可以这样写: fun getResult(a:Int,b:Int):Unit{  print(a+b)}Unit 的返回类型可以省略 定义局部变量:kotlin声明变量与java声明变量不一样,java变量类型在前,变量名在后,而kotlin则相反,变量名在前,变量类型在后,中间加冒号,并且kotlin可以自动判断变量的类型声明局部变量(常量使用val关键字)val a:Int =1val b = 1  // 自动判断Int类型声明变量 (变量使用var关键字)var x = 5 //自动推断出是int类型3.kotlin的注释与java一样,支持单行注释和块注释// 单行注释
/* 这是一个
块注释 */
使用字符串模板:使用${变量},如变量为args:Array<String>,使用的时候可以这样写 fun main(args:Array<String>){if(args.size == 0)returnprint("First argument:${args[0]}")}而不用在去加号加起来,gradle里面也是支持的fun main(args:Array<String>){  if(args.size == 0) returnprint("First argument:"+arg[0])}使用if表达式的时候这样写:fun max(a:Int,b:Int):Int{if(a>b){return a}else{return b}}如果一个函数只有一个并且是表达式函数体并且是返回类型自动判断的话,可以这样写:fun getResult(a:Int,b:Int) = a+b那么加上if表达式的话,可以这样写:fun max(a:Int ,b:Int )=if(a>b) a else b4:使用可空变量和空置检查当一个变量,函数可能出现空值得时候,应该指出该引用可空,如:fun getResult(a:Int, b:Int):Int?{// 设置函数返回类型可空print(a + b)return null}使用类型检查和自动转换is运算符是检查一个表达式是否是某个类型的实例,如果为不可变局部变量或属性进行类型检查,则无需显式转换fun getStringLength(obj:Any):Int?{if( obj is String){// 'obj'在这个分支中自动转换为String类型  return obj.lenth}//'obj'任然是‘Any’类型return null}或者fun getStringLength(obj:Any):Int? {if(obj !is String ) return null// 'obj'在这个分支中自动转换为String类型  return obj.lenth}也可以这样fun getStringLength(obj:Any):Int?{if( obj is String && obj.length >0){return obj.length}return null}5.使用for循环fun main(args :Array<String>){for( arg in args){ print(arg)
// in操作符可以判断是否arg是否在args里面
}}或者这样写for ( i in arg.indices){print(args[i])}6:使用while循环fun main (args:Array<String>){var i = 0while (i < args.size){print(args[i++])}}7: 使用when表达式:when表达式就相当于java的switch表达式fun cases (obj:Any){  when (obj){  1          ->print("one") //如果obj的值为1“hello”->print("Greeting")// 如果obj的值为hello else   ---> print("Unknown")// 默认,相当于switch 的default}}8:使用ranges使用in运算符检查数字是否在范围内if(x in 1..y-1){//1..y-1表示1到y-1的范围print("OK")}
for (i in 1 until 100) { ... } // 半开范围,不包括100,相当于[1,100)for (x in 2..10 step 2) { ... } // 每次夸2,内容为2,4,6,8,10for (x in 10 downTo 1) { ... } // 返序if (x in 1..10) { ... } 使用!in 运算符检查数值是否在范围外if(x!in 0..array.lastIndex){print("Out")}8:使用集合:循环输出一个集合里面的值或者判断集合里面是否包含某个变量for(name in names){//将会调用names.contains(name)方法   println(name)}使用lambda表达式过滤和映射集合
// it表示namenames.filter { it.startsWith("A") }.sortedBy { it }.map { it.toUpperCase() }.forEach { print(it) }

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: