Kotlin 入门基础语法学习笔记
来源:互联网 发布:windows10查看mac表 编辑:程序博客网 时间:2024/06/05 07:53
敲了一天的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) }}
阅读全文
1 0
- Kotlin 入门基础语法学习笔记
- Kotlin基础语法学习笔记
- Kotlin学习笔记-基础语法
- Kotlin学习笔记1-1 入门-语法基础
- Kotlin学习笔记之基础语法一
- Kotlin 博客 基础语法学习笔记
- Kotlin学习笔记之基础语法
- kotlin学习笔记-2-基础语法
- Kotlin学习笔记——基础语法
- Kotlin 基础语法学习
- 【Kotlin】基础语法学习
- kotlin基础语法学习
- Kotlin入门基础笔记
- Kotlin学习过程 二 Kotlin基础语法
- Android Kotlin学习--基础语法
- Kotlin语法 学习笔记(一)
- Kotlin入门____基础语法(一)
- Android kotlin入门与基础语法一
- GIS中的空间数据引擎
- SSH主要用于远程登录
- NOIP 2017 身败名裂退役记
- leetcode#283. Move Zeroes
- MySql数据库下载和安装
- Kotlin 入门基础语法学习笔记
- TensorFlow入门之简单实现神经网络的结构
- 异常处理
- gamepad api简单例子
- 归并排序的递归实现
- (一).w10下用Hyper-v安装linux虚拟机
- 向MySQL数据库中批量读取数据
- C#给JSON对象添加一个键值对
- 登录之JavaWeb