属性

//常量,只能写于方法之外,编译时就已经确定
//双shift输入show kotlin bytecode 查看字节码文件
const val MAX = 100fun main() {//完整变量定义var str:String = "Hello world"println(str)//类型推断var str2 = "Hello"println(str2)//val表示只读 var表示后续可变var str3 = "A"str3 = "AA"val str4 = "B"println(str3)println(str4)println(MAX)//kotlin编写只提供引用类型,不过字节码会将其转化为基本类型val age:Int = 12
}

条件语句

fun main() {val age = 1//range条件语句//表示 age>=0 && age <=3if (age in 0..3) {println("in 0..3")}//表示 age<0 && age >3if (age !in 0..3) {println("!in 0..3")}//when条件语句val a = when(age) {0 -> "0"1 -> "1"2 -> "2"3 -> "3"4 -> "4"else -> "-1"}println(a)//String模板拼接val name1 = "小明"val name2 = "小红"println("${name1}和${name2}是好朋友")val name3 = "小刚"val flag = falseprintln("${name1}和${if(flag) name2 else name3}是好朋友")
}

函数

fun main() {println(getResult(3))println(getResult2(3))//具名参数调用,指定参数名字和值,顺序可错位println(getResult2(i2=2, i=1))//没有返回值的方法返回Unit类型println(noResult())//系统TODO方法抛异常,返回的是Nothing类型
//    TODO("123")//调用反引号方法` *123^ `()
}//方法,修饰符默认public
private fun getResult(i:Int) : String {return "result=${i}"
}
//i2为缺省参数,可不传,默认为5
private fun getResult2(i:Int, i2:Int = 5) : String {return "result=${i + i2*10}"
}
//无返回值方法
private fun noResult() {
}//反引号(键盘左上角)带符号的方法
fun ` *123^ `() {println("反引号方法")
}

匿名函数

fun main() {//无参匿名函数声明val fun0 : () -> String//无参匿名函数赋值fun0 = {val str = "无参匿名函数"//匿名函数最后一行为返回值,不用returnstr}println(fun0())//一个参数匿名函数val fun1 : (String) -> String = { name ->val str = "一个参数匿名函数""${str}参数为:${name}"}println(fun1("kevin"))//一个参数匿名函数可以省略 name -> 系统自动使用it代替参数val fun11 : (String) -> String = {val str = "一个参数匿名函数""${str}参数为:${it}"}println(fun11("kevin11"))//两个参数匿名函数val fun2 : (String, String) -> Unit = { name1, name2 ->println("两个参数匿名函数参数为${name1}和${name2}")}fun2("kevin", "peter")//无参匿名函数的类型推断val funT0 = {val str = "无参匿名函数类型推断"str}println(funT0())//一个参数匿名函数的类型推断val funT1 = { name:String ->val str = "一个参数匿名函数类型推断""${str}参数为:${name}"}println(funT1("kevin"))//两个参数匿名函数的类型推断val funT2 = { name1:String, name2:String ->val str = "两个参数匿名函数类型推断""${str}参数为:${name1}和${name2}"}println(funT2("kevin", "peter"))
}

函数简化

fun main() {val time = (1..12).random()execute("小明", time, { name:String, time:Int ->val str = "${name}在下午${time}点打球"str})//末尾参数可置于小括号外execute("小明", time) { name:String, time:Int ->val str = "${name}在下午${time}点打球"str}//唯一参数可省略小括号execute { name:String, time:Int ->val str = "${name}在下午${time}点打球"str}//使用具名函数的引用execute("a", 4, ::get123)
}private fun get123(name: String, time: Int) : String {return "123"
}private fun execute(name:String = "小刚", time:Int = 5, getStr:(String, Int)->String) {println(getStr(name, time))
}

函数闭包

fun main() {//函数返回值为函数val funAddOne = getFun()println(funAddOne(4))//返回的方法中使用上级方法的参数称之为闭包val funAddTwe = getFun2(4)println(funAddTwe())
}private fun getFun() : (Int) -> String {return {(it+1).toString()}
}private fun getFun2(a:Int) : () -> String {return {(a+2).toString()}
}

Kotlin的空安全

fun main() {//可空类型var a:String? = "aaa"
//    a = nullprintln(a)//安全调用操作符?. ,加问号当为空的时候跳过此函数println(a?.capitalize())//带let的安全调用,不为null走后面的代码,尾句为返回值val b = a?.let {if (it.isNotBlank()) {it} else {"a is empty"}}println(b)//安全调用支持函数的链式调用val c = a?.capitalize()?.plus("ccc")println(c)
}
fun main() {var str:String? = "aaa"
//    str = null//非空断言操作符!!. ,会引发KotlinNullPointerException
//    println(str!!.capitalize())//空合并操作符?: ,符号前面不为空返回符号前面,为空返回符号后面val str2 = str ?: "bbb"println(str2)//安全调用与合并混合使用,str为空返回后面,否则返回前面的执行结果val str3 = str?.let { it.capitalize() } ?: "str is null"println(str3)
}

异常

fun main() {var num:Int? = nulltry {//抛出自定义异常num = num ?: throw MyException()println(num!!.plus(1))} catch (e : MyException) {e.printStackTrace()}println("捕获异常")
}class MyException : IllegalArgumentException("未知异常")

系统判断异常函数

fun main() {val a:Int? = null//如果参数为null,会抛出第二个参数的返回值的IllegalStateExceptioncheckNotNull(a, {"a is null"})val b = false//如果参数为false,会抛出第二个参数的返回值的IllegalArgumentExceptionrequire(b, {"b is false"})//如果参数为null,会抛出第二个参数的返回值的IllegalArgumentExceptionrequireNotNull(a, {"a is null"})
}

Kotlin笔记(一)相关推荐

  1. kotlin笔记第一阶段(变量语句函数)

    kotlin笔记第一阶段(变量&语句&函数) 笔记所在视频地址 02.Kotlin语言成为Android第一语言 03.Kotlin语言和JVM虚拟机 04.学Kotlin语言的重要性 ...

  2. 【一篇文章搞懂】,字节跳动厂内部超高质量Flutter+Kotlin笔记

    开头 面试时间:2021.2.9 1~3面.2021.2.13 4~6面.2021.2.26 HR面 面试部门 + 岗位:商业化 - 高级 Android 开发工程师 面试感想:整体面得比较累,基础面 ...

  3. Kotlin 笔记 纯属娱乐萌新大佬绕道

    ///-----------------------for循环写法大全 //for循环 >=0 <1   特别注意区分大小写         for (j in 0 until 1) { ...

  4. 初学kotlin笔记

    面对安卓开发大趋势,不得不放下java,学习kotlin 忽略语法,在第一行代码中最开始了解的就是控件的使用,有过java的学习基础,相信大家使用控件都会易如反掌.以下就是对kotlin的一些见解 1 ...

  5. Kotlin笔记30--顶层方法

    Kotlin 中的 顶层方法 是指 没有定义在任何类中的方法. 新建一个 Kotlin 文件,文件类型选择 File ,新建之后,这个文件中的所有方法都是顶层方法. 纳尼?好像不科学. 注意,新建的 ...

  6. Kotlin笔记15——字符串转数字类型

    前言 在使用Java编程语言开发的,我们会经常遇到字符串转数字的需求.那么在Kotlin中是怎么实现的呢?接下来跟大家分享一下. 字符串转数字 首先我们必须保证字符串是数字类型,不能出现a3这种数字与 ...

  7. Kotlin笔记9--无参构造函数

    Kotlin 的构造函数分为主构造函数和次构造函数. 主构造函数是我们常用的构造函数. 每个类默认有一个不带参数的主构造函数.我们也可以显示的指明它的参数. 主构造函数没有函数体,直接定义在类名后面. ...

  8. Kotlin笔记7-Delegation 和 Delegated Properties

    一.Delegation 类的代理 代理模式被证明是实现继承的一个很好替代方案,代理模式使得我们可以用聚合来替代继承,将代理和真实实现分离开来,以达成解耦的目的. Kotlin对代理模式内置支持,且零 ...

  9. Kotlin笔记(七)——委托属性(Delegated Properties)

    Delegated Properties我姑且将其称为委托属性,因为实在不知道怎么翻译好,委托属性是一类特殊的Kotlin属性,先来看看最基本的委托属性. class Dog1 {var name: ...

最新文章

  1. android系统用在什么电脑,手机变电脑的简单操作 适用于所有Android系统的向日葵...
  2. JAVA中流水账的实现_流水账式java基础Summary
  3. 阿德:工作与发财之间的秘密
  4. Html5 postMessage
  5. 编写一个脚本判断某个用户是否处在活动模式_使用 TypeScript 编写爬虫
  6. linux设置蓝牙可连接网络,Linux下蓝牙参数设置程序
  7. 研究机构:宁德时代是上半年全球第二大EV与PHEV电池供应商
  8. Cython 的学习
  9. Android开发中如何加载API源码帮助开发
  10. vue基础-25-vue的基础面试知识
  11. ff14离线查看客户端日志小技巧
  12. ubuntu下安装teamview
  13. 吴恩达机器学习python实现8 异常检测及推荐系统
  14. 一些计算机u口无法使用的原因,电脑USB接口突然不能用的多个原因分析
  15. 格式工厂怎么将qlv转换成mp4 转换方法最新
  16. 【学习笔记】特殊数论函数求和
  17. 联通银行卡代扣功能的设计实现
  18. python足球大数据分析_Python 抓取欧洲足球联赛数据进行大数据分析
  19. Android视频编辑SDK免费版,Android视频编辑SDK
  20. prometheus的401、403报错处理

热门文章

  1. 年产40万吨甲醇制乙烯MTO工艺设计
  2. u盘raw数据恢复,小牛数据恢复软件
  3. 22个Python非常食用的小项目,建议收藏学习!
  4. java调色板制作源码,JS实现的在线调色板实例(附demo源码下载)
  5. 照片日历制作软件服务器端,#原创新人#99%完美的全平台日历解决方案
  6. STM32F1与STM32CubeIDE编程实例-麦克风声音传感器驱动
  7. 如何把自己写的网站项目发布到网上?
  8. android逆向01:修改apk的资源文件,smali插桩
  9. 【JavaScript 逆向】猿人学 web 第十八题:jsvmp,洞察先机
  10. 七星网购血本打造立体视频商城