全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Kotlin教程之基本数据类型

Kotlin教程之基本数据类型的学习

基本类型

我们知道java的基本类型分为基本数据类型:

  • int 普通整型
  • float 浮点型
  • char 字符型
  • short 短整型
  • byte 字节型
  • long 长整型
  • double 双精度
  • boolean 布尔型

和引用数据类型:

  • class Type 类类型
  • interface Type 接口类型
  • array Type 数组类型
  • null Type 空类型

在 Kotlin 中,所有变量的成员方法和属性都是一个对象。一些类型是内建的,因为它们的实现是优化过的,但对用户来说它们就像普通的类一样。在这篇中,我们将会讲到大多数的类型:数值,字符,布尔,以及数组。

Kotlin 的 数值类型

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

Kotlin 提供了如下内建数值类型(和 java 很相似):

不知道你注意了没有:字符在 Kotlin 中不是数值类型

Kotlin 的 数值类型 的使用

数值类型的声明

1 .变量定义
var <标识符> : <类型> = <初始化值>
常量定义
val <标识符> : <类型> = <初始化值>

可变变量,使用var修饰;不可变的变量(类似于Java中的final),使用val修饰。而在变量类型后使用了问号,表示这个变量是空指针安全的

2 .类型推导

你可能在其他语言中看到过类型推导。在 Java 里,我们需要自己声明类型,变量名,以及数值。在 Kotlin 里,顺序有些不一样,你先声明变量名,然后是类型,然后是分配值。很多情况下,你不需要声明类型。一个字符串字面量足以指明这是个字符串类型。字符,整形,长整形,单浮点数,双浮点数,布尔值都是可以无需显性声明类型的。

var string: String = ""
var string = ""
var char = ' '

var int = 1
var long = 0L
var float = 0F
var double = 0.0

只要 Kotlin 可以推导,这个规则同样适用与其他一些类型。通常,如果是局部变量,当你在声明一个值或者变量的时候你不需要指明类型。在一些无法推导的场景里,你才需要用完整的声明变量语法指明变量类型。

看到var 你是否联想到了我们在js开发中的变量声明,是不是感觉又从陌生回到了熟悉的面孔,那还在等什么赶快加入到学习的行列吧。

代码中使用声明:

val a: Int? = 10000
val b: Long? = a 
var f: Float? = 0F
var d: Double? = 0.0

使用中转型注意:

显式转换

由于不同的表示,短类型不是长类型的子类型。如果是的话我们就会碰到下面这样的麻烦了

//这是些伪代码,不能编译的
val a: Int? =1 //一个装箱过的 Int (java.lang.Integer)
val b: Long? = a // 一个隐式装箱的 Long (java.lang.Long)
pritn ( a == b )// 很惊讶吧 这次打印出的是 'false'

因此特性甚至值都会悄悄丢失掉

所以,短类型是不会隐式转换为长类型的。这意味着我们必须显式转换才能把 Byte 赋值给 Int

val b: Byte = 1 // OK, literals are checked statically
val i: Int = b //ERROR
//我们可以通过显式转换把数值类型提升
val i: Int = b.toInt() // 显式转换

每个数值类型都支持下面的转换:

toByte(): Byte
toShort(): Short
toInt(): Int
toLong(): Long
toFloat(): Float
toDouble(): Double
toChar(): Char

隐式转换的缺席是很少提及,因为我们可以使用上下文推断出类型,并且算术运算会为合适的转换进行重载,比如1

val l = 1.toLong + 1 //Long + Int => Long

Char字符

由于不是数值类型,所以我们必须这样使用:

fun check(c: Char) {//函数先判断是不是Char类型
  if (c == 1) { //ERROR: 类型不匹配
    //...
  }
}

字符是单引号包起来的 ‘1','\n','\uFF00'。我们可以显示的把它转换为 Int 型

fun decimalDigitValue(c: Char): Int {
  if (c !in '0'..'9') 
    throw IllegalArgumentException("Out of range")
  return c.toInt() - '0'.toInt() //显示转换为数值类型
}

和数值类型一样,字符在空检查后会在需要的时候装箱。特性不会被装箱操作保留的。

布尔类型

布尔值只有 true 或者 false+

布尔值的内建操作包括

|| – lazy disjunction && – lazy conjunction

结尾

好了Kotlin的基本数据类型的使用也是讲完了,学习是我们前进的不竭动力。下一篇我们来讲Kotlin引用数据类型的使用。

Come on,enjoy it.

 


# Kotlin学习之基本数据类型  # Kotlin数据类型  # Kotlin基本数据类型详解  # Kotlin基础教程之数据类型  # Kotlin编程条件控制示例详解  # Kotlin编程循环控制示例详解  # kotlin实战教程之lambda编程  # Kotlin编程基础数据类型示例详解  # 我们可以  # 布尔  # 都是  # 内建  # 转换为  # 隐式  # 你不  # 整型  # 我们必须  # 布尔值  # 很相似  # 的是  # 这是  # 变量名  # 就会  # 浮点数  # 好了  # 就像  # 还在  # 将会 


相关文章: 建站主机类型有哪些?如何正确选型  如何用wdcp快速搭建高效网站?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  c++如何打印函数堆栈信息_c++ backtrace函数与符号名解析【方法】  深圳网站制作案例,网页的相关名词有哪些?  C++时间戳转换成日期时间的步骤和示例代码  金*站制作公司有哪些,金华教育集团官网?  如何用景安虚拟主机手机版绑定域名建站?  如何选择服务器才能高效搭建专属网站?  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  如何在阿里云虚拟服务器快速搭建网站?  如何打造高效商业网站?建站目的决定转化率  湖北网站制作公司有哪些,湖北清能集团官网?  如何在IIS中新建站点并配置端口与IP地址?  制作网站的模板软件,网站怎么建设?  c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗  如何快速搭建自助建站会员专属系统?  成都响应式网站开发,dw怎么把手机适应页面变成网页?  如何挑选高效建站主机与优质域名?  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  企业微网站怎么做,公司网站和公众号有什么区别?  用v-html解决Vue.js渲染中html标签不被解析的问题  如何在新浪SAE免费搭建个人博客?  中山网站推广排名,中山信息港登录入口?  定制建站流程步骤详解:一站式方案设计与开发指南  正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?  建站之星如何实现五合一智能建站与营销推广?  整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?  网站制作知乎推荐,想做自己的网站用什么工具比较好?  如何在腾讯云服务器上快速搭建个人网站?  制作旅游网站html,怎样注册旅游网站?  建站之星2.7模板:企业网站建设与h5定制设计专题  如何快速生成高效建站系统源代码?  制作公司内部网站有哪些,内网如何建网站?  如何选择靠谱的建站公司加盟品牌?  建站主机空间推荐 高性价比配置与快速部署方案解析  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  网站图片在线制作软件,怎么在图片上做链接?  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?  建站OpenVZ教程与优化策略:配置指南与性能提升  如何通过服务器快速搭建网站?完整步骤解析  如何通过FTP服务器快速搭建网站?  C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换  内部网站制作流程,如何建立公司内部网站?  香港服务器选型指南:免备案配置与高效建站方案解析  如何自定义建站之星模板颜色并下载新样式? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。