欧酷网

您的位置:主页>移动开发>

Android Kotlin(一) 基础

首先申明下,本文为笔者学习《Kotlin 程序开发入门精要》的笔记,并加入笔者自己的理解和归纳总结。

1. 定义变量和方法

1.1 定义变量

  • 定义变量必须以var开头,定义常量以val开头
  • 数据类型在变量后面,并且用冒号(:)分隔
  • 定义变量时如果未初始化,必须指定数据类型。如果进行了初始化,可以不指定数据类型,编译器会自动推导数据类型
  • 不需要以分号(;)结尾

示例

var a1: Int
var a2: Long = 3
val a3 = 10
 

1.2 定义方法

  • 定义方法以fun开头
  • 参数需要包括参数名和参数类型
  • 可以有返回值,如果没有返回(Unit),也可以不返回

示例

fun add(a: Int, b: Int): Int {
	return a + b
}

fun add(): Unit {	
}
 

2. 基础数据类型

2.1 数字类型

数据类型占用字节数
Double8
Float4
Long8
Int4
Short2
Byte1

Kotlin提供了一系列方法用于类型之间的转换

  • toByte(): Byte,转换成Byte类型
  • toShort(): Short,转换成Short`类型
  • toInt(): Int,转换成Int类型
  • toLong(): Long,转换成Long类型
  • toFloat(): Float,转换成Float类型
  • toDouble(): Double,转换成Double类型
  • toChar(): Char,转换成Char类型

Kotlin提供了一些特殊表示法

  • 表示Long类型,在数值后面加Ll
  • 表示Float类型,在数值后面加Ff
  • 表示十六进制,在数值前面加0x
  • 表示二进制,在数值前面加0b

Kotlin提供了下划线(_)作为数值分隔符,比如12345678,可以写成12_345_678

2.2 字符类型

字符类型用Char定义,用单引号表示。

var c1: Char
var c2  = 'a'
 

字符类型不支持直接与数字比较,但可以通过toInt(): Int方法转换

if (c2.toInt() == 97) {
    println(c2)
}
 

Kotlin也支持反斜杠(\)转义符

  • \t,制表符
  • \b,退格符
  • \n,换行符
  • \r,回车符
  • \',单引号
  • \",双引号
  • \\,反斜杠

2.3 布尔类型

布尔类型用Boolean定义,有两个值truefalse。有3种操作: 逻辑或(||),逻辑与(&&),逻辑非(!)

2.4 数组

数组使用Array类表示,包含getset方法(通过操作符重载实现[]操作)。

  • 使用arrayOf函数定义存储任意值的数组
  • 使用arrayOfNulls函数定义指定长度的空数组
  • 使用Array类的构造器指定数组长度和初始化数据
  • 使用intArrayOfdoubleArrayOf等函数定义指定类型的数组

示例

var arr = arrayOf(1, 2, 3, 'a')
println(arr[2])
arr[2] = 'b'
println(arr[2])	
println(arrayOfNulls<Int>(4))
println(Array<Int>(4, { i -> i * i }))
println(doubleArrayOf(1.0, 2.0, 3.0))
 

2.5 字符串

字符串用String定义,用双引号表示。

var s1: String
var s2 = "Hello World!"
 

3个引号表示保留原始格式

var s3 = """
    This is format String
        with space.
"""
 

字符串模板,在字符串中添加若干个占位符($),内容可以在后期指定。

var s4 = "abcd"		
println("$s4.length is ${s4.length}") // abcd.length is 4
 

3. 控制语句

3.1 if语句

if语句用法

var a = 12
var b = 15
var min: Int
if (a < b) {
    min = a
} else {
    min = b
}
 

if语句可以作为表达式使用,最后一个表达式是返回值

min = if(a < b) {
    a
} else {
    b
}
 

3.2 when语句

when语句替代了switch语句

  • when语句会寻找第一个满足条件的分支
  • 如果分支中多余一条语句,要用{...}
  • 满足条件的分支执行后,会自动终止when语句的执行,不用加上break
  • 用逗号(,)分隔多个条件
  • in关键字可以确定一个范围

示例

when(a) {
    1 -> println("a == 1")
    2,3 -> println("a == 2 or 3")
    in (4..10) -> println("a in (4..10)")
    else -> {
        println("not found")
    }
}
 

when语句也可以作为表达式使用

var m: Char = when(a) {
    1 -> 'a'
    2,3 -> 'b'
    in (4..10) -> 'c'
    else -> {
        'd'
    }
}
 

when中的分支条件不仅可以是常量,还可以是任意表达式

when(a) {
    getValue(1) -> println("getValue(1)")
    getValue(2) -> println("getValue(2)")
    else -> {
        println("not found")
    }
}
 

getValue()是一个函数

fun getValue(v: Int): Int {
    return v + 10
}
 

3.3 for循环

for循环直接枚举集合中的元素

var arr = intArrayOf(1, 1, 2, 3, 5, 8)
for (item: Int in arr) {
    println(item)
}

for (index in arr.indices) {
    println("arr[$index] = ${arr[index]}")
}

for ((index, value) in arr.withIndex()) {
    println("arr[$index] = $value")
}
 

3.4 while和do…while

while语句同样支持continuebreak

var i: Int = 1
while(i < 10) {
    if (i == 6) break
    println(i++)
}

do {
    if (i == 5) continue
    println(i)
} while (--i > 0)
 

4. 包

在Kotlin中,包名和文件所在目录可以不一致。
Tool.kt文件,该文件可以不在tool目录下,

package tool

val HOUR: Int = 60 * 60

fun max(a: Int, b: Int): Int {
    return if (a > b) a else b
}
 

Ues.kt文件,和Tool.kt文件在同一目录下,但未指定package

fun main(args: Array<String>) {
    println(tool.HOUR)
    println(tool.max(12, 13))
}
 

可以使用import导入。

import tool.HOUR
import tool.max

fun main(args: Array<String>) {
    println(HOUR)
    println(max(12, 13))
}
 

可以一次导入所有资源。

import tool.*
 

可以给导入资源起别名。

import tool.max as MAX

fun main(args: Array<String>) {
    println(HOUR)
    println(MAX(12, 13))
}
 

kotlin会默认导入一些包。

  • kotlin.*
  • kotlin.annotation.*
  • kotlin.collections.*
  • kotlin.comparisons.*
  • kotlin.io.*
  • kotlin.ranges.*
  • kotlin.sequences.*
  • kotlin.text.*

JVM默认导入

  • java.lang.*
  • kotlin.jvm*
  • 点赞

  • 收藏

  • 分享

  •    
    • 文章举报

假装你是大灰狼

 
发布了229 篇原创文章 ·    获赞 30 ·    访问量 16万+  

私信

关注

相关文章推荐