待续
一、Kotlin友好的语法
Kotlin不是诞生于学术界的一些不可思议难以理解的语法,它的语法类似于很多面向对象的语法,并且非常易于理解。
但是它又与传统的面向对象的Java有些区别,例如kotlin的val、var变量的声明。
例如:

二、相似友好的语法

/*** @author:wangdong* @description:Foo demo*/
class Foo {//val 声明的变量是不可以改变的val b: String = "b"//var 声明是可以改变的var i: Int = 0//可以根据等号右边的类型,自动判断赋予左边变量的类型fun hello(){val str = "hello"print("$str world")}//根据传入的变量,求和fun sum(x: Int,y: Int): Int{return x + y;}//根据传人的变量,求最大值//如果a大于b,则返回a,否则返回bfun maxOf(a: Float, b: Float) = if(a > b) a else b}

三、字符串的插入和计算
在字符串的插入和计算方面,类似于Java的String.format()。
例如:

fun stringDemo(){val x = 4;val y = 7;print("sum of $x and $y is ${x + y}")//会输出"sum of 4 and 7 is 11"}

四、
Kotlin will infer your types wherever you feel it will improve readability:
如果没有指定变量的类型的话,Kotlin可以根据改善阅读,自动赋予变量的类型

fun inferenceDemo() {val a = "abc"  //会自动推测为String类型var b = 4      //会自动推测为String类型val c: Double = 0.7  //明确的c的类型为Doubleval d: List<String> = ArrayList() //明确d的类型为List<String>}

五、
更灵活的类型转化

/*** @author:wangdong* @description:第一个kotlin项目*/
fun main(args: Array<String>) {var obj = "Hello";//会将小写字母转化成大写输出if (obj is String) {print(obj.toUpperCase())     // obj is now known to be a String}
}

输出结果

六、更直观的相等比较

//因为两个对象属性完全一样
val john1 = Person("John")
val john2 = Person("John")
//判断结构相等用==
john1 == john2    // true  (structural equality)
//判断引用相等用===
john1 === john2   // false (referential equality)

七、灵活变化的参数和方法运用
可以通过类,调用方法传入指定类型的参数

fun build(title: String, width: Int = 800, height: Int = 600) {Frame(title, width, height)
}

八、更多样化的方法调用方式
下面来模拟调用第七步中的build方法,三种方式都是一样的

build("PacMan", 400, 300)                           // equivalent
build(title = "PacMan", width = 400, height = 300)  // equivalent
//参数顺序如果颠倒了,则需要指定前缀
build(width = 400, height = 300, title = "PacMan")  // equivalent

九、更灵活的表达在When判断语句

/*** @author:wangdong* @description:第一个kotlin项目*/
fun main(args: Array<String>) {var x = 2//根据x的值走对应的一行,下面走x is 2when (x) {1 -> print("x is 1")2 -> print("x is 2")3, 4 -> print("x is 3 or 4")in 5..10 -> print("x is 5, 6, 7, 8, 9, or 10")else -> print("x is out of range")}
}

它在一个表达式或者一个声明中都是有用的
例如:

fun main(args: Array<String>) {var obj = "20"val res: Boolean = when {obj == null -> false//走这一层obj is String -> trueelse -> throw IllegalStateException()}print(res)
}

最终输出的结构true

十、更灵活的Bean实体类中的set和get方法

class Frame {var width: Int = 800var height: Int = 600val pixels: Intget() = width * height
}

调用类Frame中的get方法,得到的结果就是480000

十一、更灵活的对象创建和复制
It’s a POJO complete with toString(), equals(), hashCode(), and copy(), and unlike in Java it won’t take up 100 lines of code:
比Java的创建和赋值方便太多了

/*** @author:wangdong* @description:第一个kotlin项目*/
fun main(args: Array<String>) {data class Person(val name: String,var email: String,var age: Int)val john = Person("John","John@gmail.com",121)print(john)
}

输出结果:

Person(name=John, email=John@gmail.com, age=121)

十二、更灵活的预先重载的方法
A predefined set of operators can be overloaded to improve readability:
例如:

/*** @author:wangdong* @description:第一个kotlin项目*/
fun main(args: Array<String>) {data class Vec(val x: Float,val y: Float){operator fun plus(v: Vec) = Vec(x + v.x, y + v.y)}val v = Vec(2.5f,3f) + Vec(4f, 1f)print(v)
}

输出的结果是Vec(x=6.5, y=4.0)
具体咱们来debug看一下

可以简单理解为x+x,y+y

本次暂时分享到这里了。

Kotlin详尽语法分析(未完待续)相关推荐

  1. 《今日简史》读书笔记(未完待续)

    <今日简史>读书笔记(未完待续) 这本书是尤瓦尔·赫拉利的简史三部曲的最后一本,前2本书是<未来简史>和<人类简史>.根据豆瓣上网友的评价,这本书是尤瓦尔·赫拉利写 ...

  2. linux引数列项目过长,Linux 命令个人总结====== 未完待续 个人认为比较重要

    Linux 命令个人总结====== 未完待续 man [功能说明]: 查看帮助 [语法格式]: man [123456789]命令.文件. [选项参数]: 数字"1"表示用户命令 ...

  3. CC2530学习路线-基础实验-串口通讯发送字符串(4 未完待续)

    目录 1. 前期预备知识 1.1 串口通讯电路图 1.2 实验相关寄存器 1.2 常用波特率设置 本章未完待续..... 原来写的文章已经丢失了,只能找到这一小部分,看什么时候有时间再补上. 1. 前 ...

  4. Paper之BigGAN:ICLR 2019最新论文《LARGE SCALE GAN TRAINING FOR HIGH FIDELITY NATURAL IMAGE SYNTHESIS》(未完待续)

    Paper之BigGAN:ICLR 2019最新论文<LARGE SCALE GAN TRAINING FOR HIGH FIDELITY NATURAL IMAGE SYNTHESIS> ...

  5. Windows x64内核学习笔记(五)—— KPTI(未完待续)

    Windows x64内核学习笔记(五)-- KPTI(未完待续) KPTI 实验一:构造IDT后门并读取Cr3 参考资料 KPTI 描述:KPTI(Kernel page-table isolati ...

  6. javascript有用小功能总结(未完待续)

    1)javascript让页面标题滚动效果 代码如下: <title>您好,欢迎访问我的博客</title> <script type="text/javasc ...

  7. Ubuntu1804和2004高版本,右键无法创建TXT文档的解决办法【未完待续】

    Ubuntu1804和2004高版本,右键无法创建TXT文档的解决办法[未完待续] 问题: Ubuntu1804和2004高版本,右键无法创建TXT文档 解决办法1:[常用] 1.打开终端 2.输入: ...

  8. 《图解 HTTP》读书笔记(未完待续)

    ARP 协议(Address Resolution Protocol)一种以解析地址的协议,根据通信双方的 IP 地址就可以查出对应的 MAC 地址. MAC( Media Access Contro ...

  9. pythonb超分辨成像_Papers | 超分辨 + 深度学习(未完待续)

    1. SRCNN 1.1. Contribution end-to-end深度学习应用在超分辨领域的开山之作(非 end-to-end 见 Story.3 ). 指出了超分辨方向上传统方法( spar ...

  10. 性能测试调优篇---未完待续

    性能测试调优一: 1.首先,看下选测交易的整个走向 纯系统内部交易: 选测交易如果是系统内的交易,每一步请求都和系统交互几次,访问了几个数据库,访问了数据库的那几张表?? 该交易走了那几台机器,这几台 ...

最新文章

  1. 游戏开发中的图像生成
  2. python ftp文件传输服务端
  3. 《SAS编程与数据挖掘商业案例》学习笔记之十七
  4. 给定一个投资组合的收益序列,以沪深300作为参照,分解该投资组合的α和β
  5. 2.Android 学习之虚拟机安装
  6. php debug 打印变量_PHP_Debug显示所有变量
  7. 轻量化卷积神经网络:SqueezeNet、MobileNet、ShuffleNet、Xception
  8. 运行MonkeyRunner时使用Genymotion模拟器
  9. django-dynamic-scraper(DDS)配置中的一些问题
  10. [转载]配置路由让MSN可传文件(2003-9-17)
  11. C语言基础专题 - 数据类型与强制类型转换(编辑中)
  12. 不要随意设置随机数种子
  13. Linux新手入门教程
  14. DuKBitmapImages 图片压缩处理技术
  15. Android Glide加载网络图片不显示,但浏览器能打开图片
  16. 区块链将成为引导第四次工业革命的重要力量
  17. 怎样才能在网上卖东西,手把手教你闲鱼卖货!
  18. 程序设计思维与实践 CSP-M4 补题
  19. 北邮计算机学硕读博,博士生考试_考博经验——说说我北邮北航考博经历_沪江英语...
  20. 2007年,7月1日

热门文章

  1. 「开源资讯」Apache Storm 2.2.0 发布,分布式实时计算
  2. Do not use built-in or reserved HTML elements as component id: animate
  3. ASP.NET Core中返回 json 数据首字母大小写问题
  4. ThinkPhp报错:thinkphp\library\think\Template.php Line(1243) template not exists:...test\...\index.html
  5. @pathvariable参数_SpringMVC 五种注解参数绑定
  6. 打包deb时,实际上是两层包名目录的结构
  7. static library libs/libvpx/libvpx.a is not portable!
  8. VirtualBox安装debian无法启动,正确的解决办法
  9. 腾达无线路由器如何开启无线中继功能
  10. 宽屏系统上播放幻灯片的设想