所有笔记整理自电子工业出版社的《Kotlin实战》一书

变量声明:

  类型放在变量名后面: val name:String="aaaa" ,String可以省略,因为可以根据等号后面的内容自动判断出name的类型

  如果可空: val name:String?=null

var:

  修饰的变量可读可写;值可以被改变,但类型不可以。

val:

  修饰的变量只可读。这代表着被val修饰的变量初始化后不可再次赋值,其变量名所指向的对象,虽然不可以更换,但是可以被改变的。如变量名指向一个链表A,它不可以重新指向另一个链表B,但A是可以添加新的节点的。

//这样是正确的
val A=arrayListOf("Java")
A.add("Kotlin") //这句会报错
A=arrayListOf("C")

字符串模板:

   var name="Kotlin" println("hello,${name}!") ,可以在字符串中用${ }来插入变量。

Kotlin中的getter与setter:

  Kotlin中声明类的属性时,会默认创建setter和getter访问器。Java和Kotlin都可以通过访问器访问属性。

  Java中可以直接使用get、set方法,需要注意的是,如果属性名以is开头,那么get方法不需要添加get前缀,使用set方法需要把is前缀更换成set;

  Kotlin可以直接调用属性,如 Person.name ,这样其实是调用了访问器。

自定义访问器:

//isSquare属性代表这个矩形是否为正方形
class Rectangle(val height:Int,val width:Int){
val isSquare:Boolean
get(){
return height==width //Kotlin中没有所谓的基本数据类型,包括Int都相当于Java中的Integer包装类,而==重载了equals方法,所以所有类型都可以用==比较是否相等,实际上是使用equals来比较的。
}
}

Kotlin的.kt文件中可以放多个类。

枚举

enum class Color{
RED,BLUE,GREEN,YELLOW,ORANGE
} //带属性的枚举类
enum class Color(val r:int, val g:Int, val b:Int){
//结尾有分号
RED(255,0,0),BULE(0,0,255),YELLOW(255,255,0);
//给枚举类定义一个方法
fun rgb() = (r * 256 + g) * 256 +b
} >>>println(Color.BLUE.rbg())
255

when:

  代替了Java中的swich case

fun getFirst(color:Color)=when(color){
Color.RED->"R"
Color.BLUE->"B"
Color.GREEN->"G"
else->"err"
} >>>println(getFirst(Color.BULUE))
B

智能转换:

  is 相当于Java中的 instanceOf ,用来判断一个对象是否是某种类型。与Java区别在于,Java使用 instanceOf之后,如果想要使用变量,需要自己进行类型转换。而 is 在进行比较之后,可以直接当做这种类型对象来用,其已经隐式的帮你转换过类型了。

  下面代码中,判断xiaoMing如果属于Person类,就可以直接使用Person类的getAge方法

if(xiaoMing is Person){
println(xiaoMing.age)
}

if :

  Kotlin中 if 带返回值,相当于Java中的三元运算符 ?: ,所以可以直接使用if来重写方法:

fun getResult(num:Int):Boolean=
if(num>5){
true //如果是代码块,最后一行会被当做返回值
}else{
false
}
//可以用when来代替if

while、 do while:与Java中一样。

for循环:

  区间:表达两个数字之间的间隔 val oneToten = 1..10 //区间是闭合的,所以1和10都在区间里,这里代表1 到 10

  没有 for i 循环了,只有类似for each循环,Kotlin中写法为

for(i in 1..100 step 2){  }  //设置步长为2,默认为1,可以省略

kotlin学习(1)基础的更多相关文章

  1. Kotlin学习第一课:从对比Java开始

    1. 介绍 今年初,甲骨文再次对谷歌所谓的安卓侵权使用Java提起诉讼,要求后者赔偿高达90亿美元.随后便传出谷歌因此计划将主力语言切换到苹果主导的Swift,不过这事后来没了跟进. 但谷歌在这两天的 ...

  2. kotlin 学习感受

    目录 kotlin 学习感受 特点 优点 屎一样的缺点 总结 kotlin 学习感受 直白的说..很不好,像屎一样,本来对此抱有很大的期望和好感度,但经过一整天的学习,完全失望了,这门语言中间有各种的 ...

  3. Kotlin学习快速入门(7)——扩展的妙用

    原文地址: Kotlin学习快速入门(7)--扩展的妙用 - Stars-One的杂货小窝 之前也模模糊糊地在用这个功能,也是十分方便,可以不用继承,快速给某个类增加新的方法,本篇便是来讲解下Kotl ...

  4. 一步步学习javascript基础篇(0):开篇索引

    索引: 一步步学习javascript基础篇(1):基本概念 一步步学习javascript基础篇(2):作用域和作用域链 一步步学习javascript基础篇(3):Object.Function等 ...

  5. 一步步学习javascript基础篇(3):Object、Function等引用类型

    我们在<一步步学习javascript基础篇(1):基本概念>中简单的介绍了五种基本数据类型Undefined.Null.Boolean.Number和String.今天我们主要介绍下复杂 ...

  6. JavaScript学习02 基础语法

    JavaScript学习02 基础语法 JavaScript中很多基础内容和Java中大体上基本一样,所以不需要再单独重复讲了,包括: 各种算术运算符.比较运算符.逻辑运算符: if else语句.s ...

  7. jQuery学习笔记 - 基础知识扫盲入门篇

    jQuery学习笔记 - 基础知识扫盲入门篇 2013-06-16 18:42 by 全新时代, 11 阅读, 0 评论, 收藏, 编辑 1.为什么要使用jQuery? 提供了强大的功能函数解决浏览器 ...

  8. Python3学习(1)-基础篇

    Python3学习(1)-基础篇 Python3学习(2)-中级篇 Python3学习(3)-高级篇 安装(MAC) 直接运行: brew install python3 输入:python3 --v ...

  9. Ant学习-001-ant 基础知识及windows环境配置

    一.Ant 概要基础知识 Apache Ant 是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发,用以构建应用,或结合其他开源测试工具例如 git.T ...

  10. 学习javascript基础知识系列第二节 - this用法

    通过一段代码学习javascript基础知识系列 第二节 - this用法 this是面向对象语言中的一个重要概念,在JAVA,C#等大型语言中,this固定指向运行时的当前对象.但是在javascr ...

随机推荐

  1. MySQL的运行模式及一些特性,引擎、事务、并发控制、优化总结

    一 MySQL总体架构 上图是<高性能MySQL>中对MySQL总体架构的描述,客户端对服务端的连接有很多条,有一个专门的处理组件,类似tomcat使用线程池处理请求.解析器负责解析sql ...

  2. 用selenium启动chrome浏览器

    python 3.7 pycharm 1.安装selenium pip3 install selenium 2.下载与chrome匹配的chromdriver.exe,放到项目的解释器路径下,跟pyt ...

  3. php----等比缩放图片

    <?php /** * Created by PhpStorm. * User: admin * Date: 2019/11/19 * Time: 8:54 */ $filename = 'lo ...

  4. 一篇文章带你了解JavaScript中的语法,数据类型,流程控制语句以及函数

    作者 | Jeskson 来源 | 达达前端小酒馆 1 JavaScript有多重要啊,才能让我说说一下,其中的语法,操作符,数据类型,内置功能等. 语法: 在JavaScript中的变量,函数名和操 ...

  5. python+requests接口自动化框架

    为什么要做接口自动化框架 1.业务与配置的分离 2.数据与程序的分离:数据的变更不影响程序 3.有日志功能,实现无人值守 4.自动发送测试报告 5.不懂编程的测试人员也可以进行测试 正常接口测试的流程 ...

  6. python-unittest生成报告的几种方式

    import unittest suite = unittest.TestSuite() #构造套件 #按测试方法添加 suite.addTest(测试类名('方法名')) suite.addTest ...

  7. 自动配置/切换/查看JDK环境变量

    最近老是需要几个版本的JDK切换工作,于是网上收集资料整理,自己写了一个:自动配置/切换/查看JDK环境变量的批处理脚本.顺带3个JDK版本分别是:jdk1.6.0_43,jdk1.7.0_80,jd ...

  8. apicloud直接上传图片

    function getPicture() { api.confirm({ title : "提示", msg : "选择图片", buttons : [&qu ...

  9. 【CF1251E】Voting(贪心)

    题意:有n个人,需要搞到全部n个人的票,搞到第i个人的票有两种方式:之前已经搞到mi个人的票,或者直接花费pi 问最小的搞到所有票的总代价 n<=2e5,1<=p[i]<=1e9,0 ...

  10. 修改springboot控制台输出的图案

    原本启动springboot项目的日志是这样的: 但是我喜欢看见自己的名字,于是: 1.在src\main\resources文件夹下新建banner.txt 2.登录网站  patorjk.com/ ...