Kotlin 入门基础语法学习笔记
Posted 化作孤岛的瓜
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kotlin 入门基础语法学习笔记相关的知识,希望对你有一定的参考价值。
敲了一天的kotlin基础语法,整理归纳到一个类里面,便于以后忘记的时候复习。
/**
* Created by GG on 2017/11/20.
*/
//main函数
fun main(args: Array<String>)
var testMain = TestMain()
print(testMain.array())
class TestMain
//单例的写法
companion object
@Volatile var instance: TestMain? = null
get()
if (field == null)
synchronized(TestMain::class.java)
if (field == null)
field = TestMain()
return field
//变量定义
var name: String = ""
//常量数组int[][][] arrs = new int[3][2][1];
val arrs = Array(3) Array(2) IntArray(1)
val list = arrayListOf(String)//arrayListOf("a","b")
//返回一个String
fun testFun(name: String)
this.name = name
println(this.name)
//加法函数,普通写法
fun add(a: Int, b: Int): Int
return a + b
//加法函数表达式写法(public 方法必须写出返回类型)
fun add2(a: Int, b: Int): Int = a + b
//无返回值函数
fun noBack(msg: String, num: Int)
print(msg + num)
//可变长度参数函数
fun extend(vararg v: Int)
for (tempV in v)
print(tempV)
//lambda函数 **
fun testLambda()
val sumLambda: (Int, Int) -> Int = x, y -> x + y
//字符串模板 $ 的用法
fun testString()
var a = 1
var s1 = "a is $a" //a is 1
println(s1)
a = 2
var s2 = "$s1.replace("is", "was")" //a was 1
println(s2)
//数组
fun array()
//数组的两种写法
var arrays = arrayOf(1, 2, 3)
var arraysb = Array(3, i -> (i * 2) )
arraysb[1] = 111
println(arraysb.toList().toString())
fun str()
val text = ""
//NULL 检查机制 跑出异常加!! 允许为空加?
fun testNull()
var age: String? = null //类型后面加?表示可为空
var age1 = age!!.toInt() //跑出空指针异常
var age2 = age?.toInt() //不对空null 做处理
var age3 = age?.toInt() ?: -1 //如果为空返回- 1
// print(age3)
//比较
fun compare()
var a: Int = 5222
println(a === a) //对象地址相等,值相等
val box1: Int = a
val box2: Int? = a
//这里遇到了一个问题,如果 ?=是可以正常装箱的,但是 = 会导致box1和box2的对象地址一直相等
//说明只有 ?=才会正常装箱,而 = 则是直接赋值
//还要注意的是-127-128在JVM中是缓存的,所以无论是否装箱都会相等,指向相同的内存地址
println(box1 == box2)
println(box1 === box2)
println(a === box1)
println(a === box2)
println(a.javaClass)
//类型检查和自动转型 (Int? 表示为如果返回值不是Int,会返回空)
fun getStringLenght(obj: Any): Int?
if (obj is String)
// 做过类型判断以后,obj会被系统自动转换为String类型
return obj.length
//在这个分支中
if (obj !is Int)
return null
//这里被转为了Int型
return obj
//甚至可以在同一个表达式中进行转换,这里可以看到obj.length == 2中obj已经成为String类型
if (obj is String && obj.length == 2)
return obj.length
//这里的obj仍然是Any类型
return null
//区间算法
fun interval()
//输出1234
for (i in 1..4) print(i)
//什么都不输出
for (i in 4..1) print(i)
//等同于 1 <= i && i <= 10
var i: Int = 2
if (i in 1..10)
println(i)
//使用step指定步长
for (i in 1..4 step 2) println(i) //输出13
for (i in 4 downTo 1 step 2) println(i) //输出42
//使用utils 函数排除结束元素
for (i in 1 until 10) print(i)
以上是关于Kotlin 入门基础语法学习笔记的主要内容,如果未能解决你的问题,请参考以下文章
Android:Kotlin详细入门学习指南-高阶函数-基础语法
Android:Kotlin详细入门学习指南-高阶函数-基础语法
Android:Kotlin详细入门学习指南-类和对象(上)-基础语法