文档章节

Kotlin教程学习-数据类型

天命剑主
 天命剑主
发布于 2015/06/14 22:22
字数 1228
阅读 538
收藏 1
点赞 4
评论 2

一切都是对象.

在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有时也可以省略.

© 著作权归作者所有

共有 人打赏支持
天命剑主
粉丝 39
博文 16
码字总数 9621
作品 0
武汉
程序员
加载中

评论(2)

天命剑主
天命剑主

引用来自“max佩恩”的评论

已经关注2年了,在我看来这个是“更好的C#”
虽然知道JVM的强大,但Java用得太烦,Groovy是弱类型,Scala学不会,还好有Kotlin
最近在考试,等考完才能继续学习了.
max佩恩
max佩恩
已经关注2年了,在我看来这个是“更好的C#”
虽然知道JVM的强大,但Java用得太烦,Groovy是弱类型,Scala学不会,还好有Kotlin
Kotlin Weekly 中文周报 —— 16

Kotlin 开发中文周报 文章 Android 开发者的一些实用技巧。(github.com) Ravindra 在 DevfestAhm 2017 的演讲。 像 Kotlin 的专家一样测试 。(blog.karumi.com) 将 Kotlin 库发布到 jCente...

DoubleThunder
2017/11/13
0
0
Android 开发必学!Kotlin初学者教程

Kotlin是由JetBrains为现代多平台应用程序开发的一种编程语言。 在本综合指南中,你可以获得以下信息: 为什么要学习Kotlin? 如何开始? 如何学习它? 在学习Kotlin之前要知道的事情 为什么...

实验楼
06/21
0
0
一款纯 Kotlin 编写的开源安卓应用 "Smile"

For Your Smile 扫码下载最新版 apk 源码:https://github.com/yhaolpz/Smile 1.界面 版块一:段子鸡汤 版块二:花瓣福利 版块三:动态搞笑图 2.代码片段 1.数据类 相关的数据类可以写在同一...

王英豪
2017/09/21
0
0
使用Kotlin进行服务器端开发

简介 Kotlin非常适合开发服务器端应用程序,允许编写简明明了的代码,同时保持与现有基于Java的技术栈的完全兼容性和平滑的学习曲线: 表现力:Kotlin的创新语言功能,如支持类型安全的构建器...

Pape
2017/10/24
0
0
推荐两份学习 Kotlin 和机器学习的资料

最近 Kotlin 和人工智能比较火,有不少同学留言问我怎么学习 Kotlin,怎么学习机器学习,今天就给大家推荐两份不错的学习资料。 1. Kotlin 学习资料 其实,在我看来最好的学习资料就是 Kotl...

stormzhangV
2017/07/05
0
0
爽翻天!告别Java。一起来使用kotlin开发完整客户端

必须写在前面:从Java转向Kotlin,只需要几天时间! 本篇是kotlin开发Android系列教程的最后一篇。前面几篇介绍了kotlin的基本语法、与java的不同之处等。在本篇文章中,将使用到前面的知识点...

wingichoy
2016/11/28
0
0
Kotlin教程学习-HelloWorld

要使用Kotlin语言编写程序,只需要在Intellij IDEA中安装Kotlin插件就行,大概几十MB大小,耐心等待安装完成就好. 当然你也可以安装eclipse Kotlin插件或者使用命令行工具.参见Kotlin官网 Hell...

天命剑主
2015/06/13
0
11
快速高效学习 Kotlin | Kotlin Bootcamp 课程介绍

Kotlin Bootcamp Udacity 是一套免费、自控进度的在线课程。通过该课程,您可学习到 Kotlin 编程语言的各项基本知识。此次的 Kotlin 入门课程由 Google 的专家与 Udacity 携手打造,适合于有...

谷歌开发者
05/30
0
0
Python 人气王,JS 比 Java 更受公司青睐

四月 PYPL 编程语言排行榜和 Hacker News 招聘趋势都已经出炉。 Hacker News 招聘趋势的数据由 Hacker News 新闻站负责收集,它不仅仅关注编程语言趋势,还关注公司要求的顶尖技能的趋势,包...

达尔文
04/23
0
17
Kotlin 资源大全 - 学 Kotlin 看这一篇教程就够了

目录 介绍 官网及文档 中文社区 教程 & 文章 开源库和框架 Demo 其他 介绍 为什么要做这个? 今天凌晨的 Google I/O 上,Google 正式宣布官方支持 Kotlin. 为了让大家更快了解和上手 Kotlin...

稀土君
2017/05/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

SpringBoot | 第十章:Swagger2的集成和使用

前言 前一章节介绍了mybatisPlus的集成和简单使用,本章节开始接着上一章节的用户表,进行Swagger2的集成。现在都奉行前后端分离开发和微服务大行其道,分微服务及前后端分离后,前后端开发的...

oKong
今天
4
0
Python 最小二乘法 拟合 二次曲线

Python 二次拟合 随机生成数据,并且加上噪声干扰 构造需要拟合的函数形式,使用最小二乘法进行拟合 输出拟合后的参数 将拟合后的函数与原始数据绘图后进行对比 import numpy as npimport...

阿豪boy
今天
1
0
云拿 无人便利店

附近(上海市-航南路)开了家无人便利店.特意进去体验了一下.下面把自己看到的跟大家分享下. 经得现场工作人员同意后拍了几张照片.从外面看是这样.店门口的指导里强调:不要一次扫码多个人进入....

周翔
昨天
1
0
Java设计模式学习之工厂模式

在Java(或者叫做面向对象语言)的世界中,工厂模式被广泛应用于项目中,也许你并没有听说过,不过也许你已经在使用了。 简单来说,工厂模式的出现源于增加程序序的可扩展性,降低耦合度。之...

路小磊
昨天
163
1
npm profile 新功能介绍

转载地址 npm profile 新功能介绍 npm新版本新推来一个功能,npm profile,这个可以更改自己简介信息的命令,以后可以不用去登录网站来修改自己的简介了 具体的这个功能的支持大概是在6这个版...

durban
昨天
1
0
Serial2Ethernet Bi-redirection

Serial Tool Serial Tool is a utility for developing serial communications, custom protocols or device testing. You can set up bytes to send accordingly to your protocol and save......

zungyiu
昨天
1
0
python里求解物理学上的双弹簧质能系统

物理的模型如下: 在这个系统里有两个物体,它们的质量分别是m1和m2,被两个弹簧连接在一起,伸缩系统为k1和k2,左端固定。假定没有外力时,两个弹簧的长度为L1和L2。 由于两物体有重力,那么...

wangxuwei
昨天
0
0
apolloxlua 介绍

##项目介绍 apolloxlua 目前支持javascript到lua的翻译。可以在openresty和luajit里使用。这个工具分为两种模式, 一种是web模式,可以通过网页使用。另外一种是tool模式, 通常作为大规模翻...

钟元OSS
昨天
2
0
Mybatis入门

简介: 定义:Mybatis是一个支持普通SQL查询、存储过程和高级映射的持久层框架。 途径:MyBatis通过XML文件或者注解的形式配置映射,实现数据库查询。 特性:动态SQL语句。 文件结构:Mybat...

霍淇滨
昨天
2
0
开发技术瓶颈期,如何突破

前言 读书、学习的那些事情,以前我也陆续叨叨了不少,但总觉得 “学习方法” 就是一个永远在路上的话题。个人的能力、经验积累与习惯方法不尽相同,而且一篇文章甚至一本书都很难将学习方法...

_小迷糊
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部