Kotlin(二)基础篇

前言

在上一篇文章《Kotlin(一) 初始Kotlin配置篇》介绍了如何在AndroidStudio中配置Kotlin插件。Kotlin 的语言特性,加上支持 Android 框架的特殊编译器插件,让 Android开发体验变得高效和愉悦。通过日常的工作学习对Kotlin的总结梳理。首先从基础篇,常用的基础语法开始,主要内容包括:

  • 变量定义
  • 基本数据类型
  • 字符串
  • 声明函数

变量定义

kotlin变量的声明方式与Java中声明变量有很大的区别,而且必须使用var或val关键字。其中:
var: 用此关键字声明的变量表示可变变量,即可读且可写。相当于Java中普通变量
val: 用此关键字声明的变量表示不可变变量,即可读且不可写。相当于Java中用final修饰的变量

val numA = 6   等价于  Java中的:public final int numA = 6
  • 显式定义变量
    格式为:修饰符 变量名: 类型
var name:String 
var age:Int
  • 隐式定义变量
    格式为:修饰符 变量名=值
var name = "小华"
var age = 20
  • 声明可空变量
    格式为:修饰符 变量名 : 类型? = 值
 var var_a : Int? = 0
 val val_a : Int? = null

基本数据类型

Kotlin 的基本数值类型包括 Byte、Short、Int、Long、Float、Double 等。不同于Java的是,字符不属于数值类型,是一个独立的数据类型

  • 数据,对象比较

Kotlin 中没有基础数据类型,只有封装的数字类型,你每定义的一个变量,其实 Kotlin 帮你封装了一个对象,这样可以保证不会出现空指针。数字类型也一样,所有在比较两个数字的时候,就有比较数据大小和比较两个对象是否相同的区别了。
在 Kotlin 中,三个等号 === 表示比较对象地址,两个 == 表示比较两个值大小。

//经过了装箱,创建了两个不同的对象
    val boxedA: Int? = a
    val anotherBoxedA: Int? = a

    //虽然经过了装箱,但是值是相等的,都是10000
    println(boxedA === anotherBoxedA) //  false,值相等,对象地址不一样
    println(boxedA == anotherBoxedA) // true,值相等
  • 类型转换
    由于不同的表示方式,较小类型并不是较大类型的子类型,较小的类型不能隐式转换为较大的类型。 较小类型转换为较大类型需要进行显示转换。每种数据类型都有下面的这些方法,可以转化为其它的类型
toByte(): Byte
toShort(): Short
toInt(): Int
toLong(): Long
toFloat(): Float
toDouble(): Double
toChar(): Char

字符串

  • 字符串模板
    字符串可以包含模板表达式 ,即一些小段代码,会求值并把结果合并到字符串中。 模板表达式以美元符($)开头,由一个简单的名字构成:
val i = 10
println("i = $i") // 输出“i = 10”

或者用花括号括起来的任意表达式:

val s = "abc"
println("$s.length is ${s.length}") // 输出“abc.length is 3”

声明函数

  • 函数定义
fun sum(value1:Int,value2:Int):Int{
        return  value1+value2
    }

定义格式为:可见性修饰符 fun 函数名(参数名 :类型,…) : 返回值{}

  • 参数定义

参数格式为:参数 : 类型

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

参数类型:Any ;与java中Object相同,kotlin通过 is 关键字判断参数类型。

  fun  getObj(value:Any): String?{
        if(value is String) {
            return value
        }
            return  null
    }

函数的变长参数可以用 vararg 关键字进行标识:

fun vars(vararg v:Int){
    for(vt in v){
        print(vt)
    }
}

// 测试
fun main(args: Array<String>) {
    vars(1,2,3,4,5)  // 输出12345
}
  • 返回值定义
    返回值格式为: :返回值{}
fun sum(a: Int, b: Int): Int {   // Int 参数,返回值 Int
    return a + b
}

返回值::Unit 无返回值的函数(类似Java中的void):

fun printSum(a: Int, b: Int): Unit { 
    print(a + b)
}
  • 表达式体函数
fun max(a: Int, b: Int ) = if (a > b) a else b 

每个变量和表达式都有类型,每个函数都有返回类型。但是对表达式体函数来说,编译器会分析作为函数体的表达式,并把它的类型作为函数的返回类型,即使没有显式地写出来。这种分析通常被称作类型推导。
只有表达式体函数的返回类型可以省略。对于有返回值的代码块体函数,必须显式地写出返回类型和 return 语句。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值