Android kotlin入门与基础语法一

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+b
fun 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 b
fun 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)
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值