Android kotlin入门与基础语法一

来源:互联网 发布:wap网投源码 编辑:程序博客网 时间:2024/06/05 05:59

Kotlin团队为 Android开发提供了一套超越标准语言功能的工具。
1、 Kotlin Android扩展是一个编译器扩展,比如可以不用写findViewByid,直接用Id操作控件赋值
2、Anko是一个提供围绕Android API的kotlin友好的包装器的库,以及一个可以用kotlin代码替换布局.xml文件的DSL.
一、包
说明: 源文件通常以包声明开头,源文件所有内容(无论是类还是函数)都包含在声明的包内,如果没有指明包,该文件的内容属于无名字的默认包,示例如下:
package foo.bar
fun baz(){}
class Goo{}
以上方法baz的全名是foo.bar.baz,Goo的全名是foo.bar.Goo
默认导入: 有多个包会默认导入到每个kotlin文件中,如: kotlin.、kotlin.annotation.、kotlin.collections.、kotlin.io.、kotlin.ranges.、kotlin.sequences.、kotline.text.,根据目标平台还会导入额外的包JVM: Java.lang.、kotlin.jvm.*
import导入:
1、 可以导入一个单独的名字,如.import foo.Bar // 现在 Bar 可以不用限定符访问也可以导入一个作用域下的所有内容(包、类、对象等):
import foo.* // “foo”中的一切都可访问如果出现名字冲突,可以使用as关键字在本地重命名冲突项来消歧义:import bar.Bar as bBar // bBar代表“bar.Bar”
2、关键字import并不仅限于导入类;也可用它来导入其他声明:顶层函数及属性在对象声明中声明的函数和属性;枚举常量与 Java 不同,Kotlin 没有单独的 “import static” 语法;所有这些声明都用import关键字导入。顶层声明的可见性如果顶层声明是private的,它是声明它的文件所私有的
二、定义函数
带有两个Int参数、返回Int的函数:
fun sum(a:Int,b:Int):Int
{
return a+b
}
将表达式作为函数体、返回值类型自动判断的函数:

fun sum(a:Int,b:Int)=a+bfun main(args:Array<String>){    println("sum of 19 and 23 is ${sum(19,23)}")}

函数返回无意义的值:

fun main(args:Array<String>){    printSum(-1,8)}fun printSum(a:Int,b:Int):Unit{   println("sum of $a and $b is ${a+b}")}备注: Unit返回类型可以省略

三、定义局部变量
一次赋值(只读)的局部变量:

fun main(args:Array<String>){    var a:Int=1//立即赋值    var b=2//自动推断出"Int"类型    var c:Int//如果没有初始值类型不能省略    c=3//明确初始值}可变变量:fun main(args:Array<String>){    var x=5  //直接推断出"Int"类型    x+=1     println("x=$x")}

四、注释
行注释: //这是一个行注释
块注释: /*/
五、使用字符串模板

fun main(args:Array<String>){    var a=1    //模板中的简单名称    val s1="a is $a"    a=2    //模板中的任意表达式    val s2="${s1.replace("is","was")},but now is $a"    println(s2)}

六、使用条件表达式

 fun main(args:Array<String>) {     println("max of 0 and 42 is $(maxof(0,42))")} fun maxOf(a:Int,b:Int):Int {     if(a>b)     {     return a     }else     {       return b     } }使用if作为表达式:fun maxOf(a:Int,b:Int)=if(a>b) a else bfun main(args:Array<String>){     println("max of 0 and 42 is ${maxOf(0,42)}")}

七、使用可空值及null检测
当某个变量的值额可以为null的时候,必须在声明处的类型后添加? 来标识该引用可为空
如果str的内容不是数字返回null:

fun parseInt(str:String):Int?{    return str.toIntOrNull()}fun printProduct(arg1:String,arg2:String){   val x=parseInt(arg1)   val y=parseInt(arg2)   //直接使用"x"或"y"可能会报错,因为他们可能为null   if(x!=null&&y!=null)   {      println(x*y)   }else   {       println("either '$arg1' or '$arg2' is not a number")   }}fun mian(args:Array<String>){    printProduct("6","7")}

或者

fun parseInt(str:String):Int ?{    return str.toIntOrNull()}fun printProduct(arg1:String,arg2:String){   val x=parseInt(arg1)   val y=parseInt(arg2)   if (x == null) {           return      }  if (y == null) {           return    }// 在空检测后,x 和 y 会自动转换为非空值         println(x * y)}