class FirstKotlin : AppCompatActivity() {//val从不修改的变量 var 可修改的变量val age = 18var num: Int = 18//变量默认不能为null,可以添加?var name: MutableList<Person>? = ArrayList<Person>()var empty: String? = null//kotlin必须初始化变量的值,如果不初始化就使用lateinit延迟加载lateinit var delayStr: String;override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.kotlin_view)num = 19//if-else 条件表达式,kotlin不包含传统的三元运算符var sex: String = if (num == 18) {"男"} else {"女"}Log.e("LS", "sex---" + sex)//whenvar grade = when {num == 19 -> 100num == 18 -> 99else -> 66}Log.e("LS", "grade---" + grade)//因为name是全局变量,所以存在线程不安全(开2个线程),需要使用安全运算符?//如果是局部变量,,就可以不使用安全运算符了,即使开2个线程也不影响,因为线程内部不能调用局部变量
//        if(name!=null){//            name.toLowese();
//        }if (sex != null) {sex.toLowerCase();}//定义list集合使用MutableListname?.add(Person("ls", "hh"))name?.add(Person("ls", "hh"))//data class的作用是重写了toSting(),但是必须构造方法里面有传参Log.e("LS", "集合---" + name?.get(0)?.toString());Log.e("LS", "表达式添加到函数里面---" + getMethod(40))//匿名函数,该函数的返回类型为:(Sting) -> Intvar department: (String) -> Int = { inputs -> inputs.length }Log.e("LS", "匿名表达式---" + department("Android"))Log.e("LS", "高阶函数---" + job("Doctor", { str -> str.length }))//kotlin可以避免空指针,// 使用?.就相当于加一个判空条件,不会执行当前语句,调用不会报空指针,// 若使用!!.则表示你确认该属性值不为空,当属性值为空,就会抛空指针Log.e("LS", "空指针----" + empty?.toLowerCase())//SAM,即 Single Abstract Method ,就是对于只有单个非默认抽象方法接口 ,对于符合这个条件的接口称之为 SAM,这是Java 8 里的一个概念,//Java 中的SAM在 Kotlin 中可以直接用 Lambda 来表示//OnClickListener 具有单一抽象方法 onClick()tv_content.setOnClickListener{Toast.makeText(this, "我被点击了", Toast.LENGTH_LONG).show()var intent = Intent(this, TestAct::class.java)startActivity(intent)}//伴生对象 companion object 类似于对变量和方法使用 Java 的 static 关键字。//const作用是static,会重写get方法,若是java调用kotlin的参数,可以直接获取,否则就需要使用FirstKotlin.Companion.getTESTTAG()方法FirstKotlin.TAGFirstKotlin.TESTTAG//kotlin和java互调时,为了保证java传过来的值对应kotlin的可以为空(?.) 则java中使用@Nullable定义参数就可以//属性初始化 init//定义匿名内部类btn.setOnClickListener(object:View.OnClickListener{override fun onClick(p0: View?) { }})//intent跳转startActivity(Intent(this@MyCameraActivity,MyCameraActivity::class.java))//定义数组var str = arrayOf(1,2,3)var intStr = intArrayOf(1,2,3)//效率更高}var inits:Stringinit {inits = "123"}object  TestClass{const val TAG = "LoginFragment"val TESTTAG = "LoginFragment"}companion object {const val TAG = "LoginFragment"val TESTTAG = "LoginFragment"}fun getMethod(age: Int): String {var name = when (age) {18 -> "少女"40 -> "妇女"else -> "婴儿"}return name}//高阶函数fun job(doctor: String, doctorMethod: (String) -> Int): Int {return doctorMethod(doctor)}class car(val wheel: List<Wheel>) {val wheels = listOf<Wheel>()class Wheel {}}data class Person(val name: String, val sex: String)override fun onDestroy() {super.onDestroy()}}

Kotlin学习(菜鸟教程)相关推荐

  1. python学习 -- 菜鸟教程+B站视频

    人生苦短,我学python.ei,我不学,我玩web,多活两年多活两年,哈哈哈 谈一下专业课的学习,不是不支持看视频入门,但所有内容的学习必须回归到 书和文档的阅读 ! 真心的,越早学习文档越好**& ...

  2. jQuery学习(菜鸟教程)

    1.jquery安装 <head> <script src="jquery-1.10.2.min.js"></script> </head ...

  3. Jquery学习--菜鸟教程

    jQuery 是为事件处理特别设计的,页面对不同访问者的响应叫做事件. 事件处理程序指的是当 HTML 中发生某些事件时所调用的方法. 写法:$("p").click(functi ...

  4. Jquery 学习-菜鸟教程

    jquery效果和元素选择 //元素选择$(this).hide();$("p.test") //隐藏所有class="test"的<p>元素$(& ...

  5. Java菜鸟教程系列 学习笔记总结 基础篇(1)

    基础语法 本博客通过学习菜鸟教程Java专栏,并整理得出的Java基础知识. 命名规范 1.项目名全部小写 2.包名全部小写 3.类名首字母大写,如果类名由多个单词组成,每个单词的首字母都要大写.如: ...

  6. python scrapy菜鸟教程_scrapy学习笔记(一)快速入门

    安装Scrapy Scrapy是一个高级的Python爬虫框架,它不仅包含了爬虫的特性,还可以方便的将爬虫数据保存到csv.json等文件中. 首先我们安装Scrapy. pip install sc ...

  7. 菜鸟教程python3-Python数据分析,学习路径拆解及资源推荐

    原标题:Python数据分析,学习路径拆解及资源推荐 关于Python数据分析,其实网上能够找到的学习资源很多,主要分为两类: 一类是提供各种资源的推荐,比如书单.教程.以及学习的先后顺序: 另一类是 ...

  8. python菜鸟教程字典-python教程菜鸟教程学习路线

    python教程菜鸟教程学习路线,需要学Python 环境搭建.Python 中文编码.Python 基础语法.Python 变量类型.Python 运算符.Python 条件语句.Python 循环 ...

  9. 菜鸟教程-css3学习笔记

    学习链接是: https://www.runoob.com/css3/css3-tutorial.html ############################################## ...

最新文章

  1. sql server xp_readerrorlog SQL语句查看错误日志
  2. https://www.unimelb.edu.au/
  3. !-- --注释和%-- --%注释的区别
  4. 网易云api如何调用_分析网易云音乐API的经历
  5. VCL组件之TStrings
  6. 搜索推荐项目EFLS开源 | 阿里妈妈联邦学习解决方案详解
  7. dom4j读取配置文件
  8. 全球与中国高密度聚乙烯塑料桶市场深度研究分析报告
  9. 什么是 GC,有什么作用?
  10. java获取pid_JAVA 取得程序执行的PID(Process ID)
  11. 日本IIJ公司在福冈机场开通运营新的数据中心
  12. MIUI10系统完美刷成开发版获取root超级权限的教程
  13. 第七期 | 网约车司机的“捞偏门”手段:作弊抢单、空跑刷单
  14. excel组合汇总_Excel汇总20150202
  15. vue输入查询内容但不查询,切页刷新表格会出现触发查询的不合理情况
  16. 【Nav2中文网】一、入门
  17. Win10 RTX30系列卡安装VS2019+Python3.7+Pytorch1.8.0+Detectron2.0.4.0+CUDA111+CUDNN8.0.5过程
  18. 2020职高计算机录取分数线,四川邮电职校2020单招录取分数线
  19. 错误:error C1853:Debug\...pch预编译头文件来自编译器版本,或者预编译头C++而在C中使用它
  20. 苹果无线显示与电视连接电脑连接电脑连接服务器,投屏黑科技!手把手教您,如何将笔记本电脑的画面无线投屏到电视或投影机上显示...

热门文章

  1. 分类器常见的评价指标
  2. cmd pc如何开多个微信_如何在电脑上面登录多个微信?
  3. 不同电脑之间共享键鼠:sharemouse
  4. 调研分析:全球与中国汽车内室照明模组市场现状及未来发展趋势
  5. 东莞厚街工业机器人展会_东莞厚街国际机械展暨工业自动化工业机器人展览会...
  6. 持续集成和交付流水线的反模式
  7. 中国计算机发展的历史和现状
  8. NBIOT模块连接巴法云实践(SIM7020)
  9. Service not registered
  10. 常见的数据签名及加密处理方式