今天简单的来介绍Kotlin的基本语法。编程语言大多相通的,会基础学起来都很快,理论都一样,实现的代码语言不一样而已。

数值类型

Kotlin 处理数值的方法和 java 很相似,但不是完全一样。比如,不存在隐式转换数值的精度,并且在字面上有一些小小的不同。

Kotlin的数值类型包括

类型 位宽
Double 64
Float 32
Long 64
Int 32
Short 16
Byte 8

主要是以下几种字面值常量:

  • 十进制数:123
  • 长整型要加L:123L
  • 十六进制数:0x0f
  • 二进制数:0b00001011
  • Kotlin不支持八进制数
  • 双精度浮点数(Double):123.5 、 123.5e10
  • 单精度浮点数(Float)要加f或F:123.5f

布尔值

关键字Boolean,只有true和false两种取值,和Java一样可以使用&&||!进行与或非操作。

字符

关键字Char,和Java中char基本用法差别不大。

var useChar: Char = 'c'

数组

关键字Array,Kotlin中数组的使用和Java差别挺大,比如我要创建数组,就得使用arrayOf

//使用arrayOf简单创建数组
var students: Array<String> = arrayOf("One", "Tow", "Three")
var studentNums = arrayOf(1, 2, 3)

使用arrayOfNulls可以创建一个指定长度,元素内容为空的数组

//创一个长度为10,元素内容皆为null的数组
var emptyArray = arrayOfNulls<String>(10)

Kotlin对一些基础类型定义数组会有拆装箱的开销,所以也可以使用自身封装好的一些API进行创建数组,以降低开销

//创建一个int数组,避免封箱装箱操作
var intArray = intArrayOf(1, 2, 3)

Kotlin数组还支持使用闭包进行初始化,就像下面这样

//使用闭包初始化一个Array<String>,数组内容为["0", "1", "4", "9", "16"]
var asc = Array(5, { i -> (i * i).toString() })

字符串

关键字String,用法和Java差别不大。字符串是不可变的。

字符串的元素——字符可以使用索引运算符访问: s[i]。 可以用 for 循环迭代字符串:

var useString: String = "I am a boy"
var firstChar: Char = useString[0] //相当于Java的String.charAt(0)
for (c in useString) {
println(c)//遍历
}
 

定义变量

Kotlin的变量分为可变和不可变,和Java中是否对变量声明final一样,它定义一个变量的语法如下:

格式: 可变类型 变量名:数据类型

  • 可变类型分为var、val两种,分别代表可变、不可变;
  • 数据类型包括Kotlin内置的数据类型以及自定义类deng ;
  • 定义变量时需要明确数据类型;

var,val可以简单理解为:

var 是可写的,在它生命周期中可以被多次赋值;

val 是只读的,仅能一次赋值,后面就不能被重新赋值。

/***Kotlin版代码***/
//定义可变变量
var id: Int = 1 //
var name: String = "字符串"
//定义不可变变量
val useVal: Int = 1000
/***Java版代码***/
int id = 1;
String name = "字符串";
final int useFinal = 1000;

Kotlin支持类型推到的,在Kotlin中大部分情况你不需要说明你使用对象的类型,编译器可以直接推断出它的类型。

  val str = "abc"
println(str)
println(str is String)
println(str::class)
println(str::class.java) // abc
// true
// class java.lang.String (Kotlin reflection is not available)
// class java.lang.String val d = Date()
println(d)
println(d is Date)
println(d::class)
println(d::class.java) // Fri Jun 09 00:06:33 CST 2017
// true
// class java.util.Date (Kotlin reflection is not available)
// class java.util.Date val bool = true
println(bool)
println(bool::class)
println(bool::class.java) // true
// boolean (Kotlin reflection is not available)
// boolean val array = arrayOf(1,2,3)
println(array)
println(array is Array)
println(array::class)
println(array::class.java) // [Ljava.lang.Integer;@7b5eadd8
// true
// class [Ljava.lang.Integer; (Kotlin reflection is not available)
// class [Ljava.lang.Integer;

Kotlin------数据类型和语法的更多相关文章

  1. Kotlin数据类型 Unit、Nothing与Nothing?、Any与Any?

    Kotlin数据类型 Unit.Nothing与Nothing?.Any与Any?   本文链接:https://blog.csdn.net/ldxlz224/article/details/9440 ...

  2. [python学习笔记] 数据类型与语法

    数据类型 数值型 int 整形 没有long类型,可以代表任意大小的整数. type(1) -> int float 浮点数 也没有double类型 type(1.2) -> float ...

  3. web前端(15)—— JavaScript的数据类型,语法规范2

    Object对象 说这个对象之前,如果您对编程语言开发稍微有点了解的话,应该知道面向对象是什么意思,而js也有面向对象一说,就因为如此,js才会这么强大. 什么是面向对象 其实所有支持面向对象的编程语 ...

  4. web前端(14)—— JavaScript的数据类型,语法规范1

    编辑器选择 对js的编辑器选用,有很多,能对html编辑的,也能对js编辑,比如notepad++,visual studio code,webstom,atom,pycharm,sublime te ...

  5. 简单认识python的数据类型和语法

    一.Python介绍 1用途 1)WEB开发 最火的Python web框架Django, 支持异步高并发的Tornado框架,短小精悍的flask,bottle, Django官方的标语把Djang ...

  6. Kotlin 数据类型(数值类型)

    Kotlin 的常见数据类型: 类型 范围 byte -128~127 short 32767-32768 int -2147483648~2147483647 long 92233720368547 ...

  7. JavaScript数据类型 —— 基础语法(2)

    JavaScript基础语法(2) 数据类型 js中有六种数据类型,包括五种基本数据类型(Number,String,Boolean,Undefined,Null),和一种复杂数据类型(Object) ...

  8. Kotlin 数据类型(字符类型)

    Kotlin有两种常见的字符类型. 第一种是String,第二种char. String String 的类型的赋值必须是用双引号的. 格式: var name="Arm830" ...

  9. JavaScript数据类型和语法

    第一章 类型 1.2 内置类型 使用 typeof 检测对象类型并不是非常安全的行为: // 安全的 typeof undefined // 'undefined' typeof true // 'b ...

  10. golang 数据类型/基础语法

    常量 变量 复合类型 结构体 数组 基础类型 整型 浮点型 复数 bool 值 字符型 字符串 错误(稍微有异议) 引用类型 切片 指针 字典 管道 函数 接口 其他语法结构 包 流程控制 运算符 注 ...

随机推荐

  1. CentOS 6.4中yum安装配置LAMP服务器(Apache+MySQL+PHP5)

    准备篇: 1.配置防火墙,开启80端口.3306端口 vim  /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp ...

  2. node+express+http-proxy-middleware做代理

    最近,不赶着做项目,于是想着怎样做公司的前后端分离,这个时候想到了nodejs,于是打算今天做一个代理的demo,其实代码很简单,但是一直卡在一个地方,现在问题解决了,贴上代码和截图. html &l ...

  3. ruby中的方法查找

    ruby中的方法调用都是 对象.方法 的形式,那么对象如何找到这个方法呢? 首先必须了解祖先链的概念,祖先链就是从一个类开始,到它的父类,再到父类的父类...一直到最终的起点(ruby中是BasicO ...

  4. 开发者应该了解的API技术清单

    近几年,API经济纷纷崛起,无论是国外还是国内,众多厂商积极开放API.开发者很多时候是要借助这些API,才能轻松构建出一款应用,极大地提高开发效率和开发质量.文中整理了一份API服务清单,内容涵盖: ...

  5. 论文笔记:OverFeat: Integrated Recognition, Localization and Detection using Convolutional Networks

    2014 ICLR 纽约大学 LeCun团队 Pierre Sermanet, David Eigen, Xiang Zhang, Michael Mathieu, Rob Fergus, Yann ...

  6. 前端JS复制特定区域的文本(兼容safari)

    html5的webAPI接口可以很轻松的使用短短的几行代码就实现点击按钮复制区域文本的功能,不需要依赖flash. 代码如下: /* 创建range对象 */ const range = docume ...

  7. Web安全学习笔记之Nmap扫描原理与用法

    1     Nmap介绍 Nmap扫描原理与用法PDF:下载地址 Nmap是一款开源免费的网络发现(Network Discovery)和安全审计(Security Auditing)工具.软件名字N ...

  8. 20145328 《Java程序设计》第5周学习总结

    20145328 <Java程序设计>第5周学习总结 教材学习内容总结 语法和继承架构 异常处理关键字 第八章内容主要是对Java的异常处理 Java的异常处理是通过5个关键字来实现的:t ...

  9. 【Swift实现代码】iOS架构模式之MVP

    1.什么是MVP? MVP是模型(Model).视图(View).主持人(Presenter)的缩写,分别代表项目中3个不同的模块. 1.1 模型 (Model):负责处理数据的加载或存储 1.2 视 ...

  10. Linux下安装SVN服务端

    安装 使用yum安装非常简单: yum install subversion 配置 2.1. 创建仓库 我们这里在/home下建立一个名为svn的仓库(repository),以后所有代码都放在这个下 ...