2019独角兽企业重金招聘Python工程师标准>>>

一切都是对象.

在Kotlin中一切都是对象.Kotlin有一些基本类型Boolean,Byte,Shot,Int,Long,Float,Double

在Kotlin中没有原始类型,以上这些类型都是对象,比如

运行结果如下

Kotlin支持16进制字面值,二进制字面值和科学记数法,官方文档中没有提到8进制

所有基本的几个数据类型不会进行显式类型转换,这一点尤为重要!那么如何进行转换呢?如下:

可以使用toLong,toInt,toShort,toChar等函数进行转换,不仅如此,数组Array<>也是对象,不但可以通过asList函数转换为List对象,数组类甚至包含了一个用于计算平均值的average函数.实际上Kotlin数组真的很像Collection(虽然Array并没有实现Collection接口).数组类还有其他很多函数,现在初学Kotlin还并不清楚用途.Kotlin毕竟太新,能找到的教程几乎只有一本英文的官方文档.(如果我能学完的话那么我的这些blog或许也能成为教程.)

我们还看到了一些有趣的东西,比如在字符串中使用${}进行替换,字符串中的代码会被执行,最后的结果被插入到字符串中,这一点简直和Unix Shell脚本里面的替换语法如出一辙,想来Kotlin也是受到了很多语言的启发.

这段代码运行结果如下

关于数组的初始化,也很有趣,如下:

前面已经说过了arrayOf()函数可以创建一个数组,Kotlin自动判断类型,比如x就是Array<String>类型,那么y是什么类型呢?

y最后会变成Array<Comparable<out Any?>>类型,Comparable是一个表示"可比较"含义的接口,Any代表任何类型,问号代表可以为null,虽然暂时看不懂,不过这并不影响.

除了arrayOf函数,还有intArrayOf,longArrayOf,doubleArrayOf等等函数

除此之外,Array有自己的构造函数,第一个参数是数组元素个数,第二个参数是一个lambda表达式或者说一个函数或者说一个迭代器(某种意义上可以看作一样东西),在Kotlin中一定程度上实现了统一.

lambda或者说迭代器在Kotlin中使用非常普遍,相信大家已经深有体会 :-) 经常看到默认的那个it(笑)

运行结果不出所料,如下

iterator从0开始哦!

i.plus(i) 等同于i+i,plus就是加法函数.Kotlin就是通过将操作符与函数进行绑定实现了操作符重载的功能(这个以后再看)

除了基本类型,数组类型,还有其他的类之外,Kotlin还有很多有趣的类型(当然他们都是对象),比如Range就是Kotlin中的一种极其有趣的类型,如下:

Range,顾名思义,就是一个范围,这个函数第一句代码定义x为IntRange类型(当然也存在DoubleRange,LongRange等),

根据1.rangeTo(5)我们可以猜测x就代表1到5这样一个范围,那么这样的范围有什么用呢?

很明显可以用在循环中(不是所有的Range都可以用在循环中,要想在循环中使用Range,必须实现iterator)

从for(a:Int in x) print("$a\t")一句我们可以看出,Range实际上可以用来限制循环控制变量的范围

这段代码输出如下

当然对于Kotlin这样追求简洁到极致的语言,使用val x:IntRange = 1.rangeTo(5)实在是太麻烦了,

你可以直接使用var y = 1..5 达到相同的效果,不仅如此,在for循环中a:Int 也可以简化为a

编译器可以自动判断数据类型,其实在前面的代码中所有的数据类型声明都可以省略,就像这样

大多数变量的类型,编译器会自动判断,我之所以把类型写出来是为了让诸位更容易看清楚代码.

如果你仔细发现的话,在Kotlin中还有很多简化代码的方法,尽量少敲键盘是这个语言很大的特点.

另外,这是我们第一次看到控制流(for循环),控制流的东西我打算留到后面,毕竟Kotlin的基本语法特性是在太多了(当然也是考虑到在控制流之前应该先了解操作符,毕竟Kotlin可是支持操作符重载的(笑)).

另外:在Kotlin中Unit类型相当于Java中的void,Unit有时也可以省略.

转载于:https://my.oschina.net/yuanhonglong/blog/466668

Kotlin教程学习-数据类型相关推荐

  1. Python学习教程:数据类型—字符串大总结

    Python学习教程:数据类型-字符串大总结 1. Python字符串的创建 字符串是Python中最常见的数据类型,通常使用单引号或双引号来定义一个字符串,如下: str = "我是字符串 ...

  2. kotlin的学习记录

    kotlin的学习记录 前言 一.Kotlin是什么? 二.学习引入 1.第一个Kotlin程序 2.基本语法 三.Kotlin 基本数据类型 1. Kotlin 的基本数值类型包括 2.比较 3. ...

  3. 【Kotlin】Kotlin 教程

    kotlin 教程 前言 什么是kotlin 什么是Java? kotlin 与 Java有什么区别 kotlin 的特点 Java的特点 kotlin 的历史 JAVA的历史 kotlin 的优势 ...

  4. Kotlin 教程(一):走进 Kotlin 的世界

    今年 Google I/O 大会上,官方扶正 Kotlin 的举动火遍整个 Android 开发圈.不过,有些开发者似乎过度解读 Google 的意图,认为 Kotlin 要取代 Java 成为 An ...

  5. Kotlin教程(九)泛型

    写在开头:本人打算开始写一个Kotlin系列的教程,一是使自己记忆和理解的更加深刻,二是可以分享给同样想学习Kotlin的同学.系列文章的知识点会以<Kotlin实战>这本书中顺序编写,在 ...

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

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

  7. MapServer Tutorial——MapServer7.2.1教程学习——第一节用例实践:Example1.5 Adding a raster layer...

    MapServer Tutorial--MapServer7.2.1教程学习--第一节用例实践:Example1.5 Adding a  raster layer 一.前言 MapServer不仅支持 ...

  8. python 几何教学_opencv-python教程学习系列11-几何变换

    前言 opencv-python教程学习系列记录学习python-opencv过程的点滴,本文主要介绍几何变换,坚持学习,共同进步. 系统环境 系统:win7_x64; python版本:python ...

  9. BeginnersBook Kotlin 教程

    来源:ApacheCN BeginnersBook 翻译项目 译者:飞龙 协议:CC BY-NC-SA 4.0 贡献指南 本项目需要校对,欢迎大家提交 Pull Request. 请您勇敢地去翻译和改 ...

最新文章

  1. 线程里面的yield();方法(让出线程)
  2. 关于程序变式中动态选择的一点说明
  3. Web安全实践(14)嗅探,arp欺骗,会话劫持与重放攻击(下)
  4. Swift - UITableView状态切换效果
  5. 用python实现打开虚拟机_如何使用python从虚拟机读取文件
  6. 复习一下,免得下次面试又栽在沟里~
  7. java锁的膨胀过程和优化
  8. 利用思科 Webex中的3个漏洞,以 ghost 用户身份参会
  9. 拉格朗日插值与拉格朗日反演
  10. securecrt登录linux下载文件,Linux使用SecureCRT上传和下载文件教程
  11. 模拟登陆webqq总结(一)
  12. 目前流行的数据分析软件有哪些?
  13. 4-17 定义一个长方形类,定义 求周长和面积的方法,然后定义一个测试类,进行测试。
  14. #990 Satisfiability of Equality Equations
  15. 又猎一“狐”:一名外逃越南嫌疑人落网啦
  16. 今日头条——面试案例
  17. 信息安全意识-密码安全
  18. 手把手教你打造全宇宙最强 Firefox 浏览器
  19. 2021-2022 ACM-ICPC Brazil Subregional Programming Contest N. No Luck
  20. selenium 处理多浏览器测试

热门文章

  1. 说说TDD的好处和坏处-对话
  2. python常用时间处理方法
  3. ACP-PMP答题技巧
  4. 有关gcc,make,gdb的知识
  5. 盛大游戏回归A股进入倒计时:估值近300亿 腾讯年初曾入股
  6. 使用Silverlight Toolkit绘制图表(上)--柱状图
  7. BFC与IFC概念理解+布局规则+形成方法+用处
  8. PHP基础系列之正则表达式(一)
  9. Tomcat 内存与优化篇
  10. zabbix 2.2自动安装脚本