Kotlin 基础 - 数据类型

一、Boolean 类型

Boolean 值有两个值,分别为 true 或 false。多数情况下,Kotlin 中的 Boolean 相当于 Java 中的基本类型 boolean,只有在必要的情况下才会装箱成为 Java 中的装箱类型 Boolean。这一切都是交由编译器来完成,我们无需关心。

var isFirst: Boolean = true
var isSecond: Boolean = false

二、Number 类型

var aLong: Long = 123L
var aInt: Int = 1234567890
var aShort: Short = 12345

var aFloat: Float = 23F
var aDouble: Double = 23.0

var aByte: Byte = 127

基本类型的装箱与拆箱
Kotlin 不再区分装箱与非装箱类型,在需要的时候编译器会帮我们自动的选择是使用基本类型还是装箱类型。

三、Chat 类型
Chat 类型表示一个字符,一个字符可以是一个字,或者一个符号等等。
字符占两个字节,表示一个 16 位的 Unicode 字符。
字符使用单引号 ‘‘ 引起来,例如 ‘中‘,‘A‘,‘\n‘。

四、数值类型的显式转换
在 Java 里面,将一个 int 值赋给 long 值,是可以允许的,因为 Int 的范围比 long 要小,所以 long 可以兼容 int。但是,在 Kotlin 中这样的隐式转换是不被支持的

var aInt: Int = 10
var    aLong: Long = 10000

// 编译器会报错
aLong = aInt

// 必须调用 toXXX 方法显示转换
aLong = aInt.toLong()

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

    1. toLong:Long
    1. toInt:Int
    1. toShort:Short
    1. toFloat:Float
    1. toDouble:Double
    1. toByte:BytetoChar: Char
    1. toString: String

五、字符串类型
字符串本质上可以说是"一串" Char,字符串使用双引号 "" 引起来5.1 字符串的比较

var aName: String = "fancyluo"
var bName: String = "fancyluo"

println(aName == bName) // true
println(aName === bName)// false

熟悉 Java 的同学对以上结果是不是就困惑了,怎么 == 打印出来了 true,这里我们可以看看== 的源码就可以解开疑惑了。

public open operator fun equals(other: Any?): Boolean

Kotlin 的 == 就相当于 Java 的 equeals,表示比较内容。
Kotlin 的 === 就相当于 Java 的 ==,表示比较对象是否相同。

5.2 字符串模板

在 Kotlin 中,字符串可以包含模板表达式,模板表达式由 $ 开头,如果需要进行表达式运算,可以写在 {} 里面

var a: Int = 1
var b: Int = 2

// Java
println("" + a + " + " + b + " = " + (a + b))

// 字符串模板
println("$a + $b = ${a + b}")

// print: 1 + 2 = 3

// 原始字符串
var rawString = """
    a
    b
    ${a + b}
"""

六、数组
Kotlin 中的数组由 Array 类表示,表示以一系列的对象,可以使用函数 arrayOf 来创建数组,示例如下

val arrayOfString: Array<String> = arrayOf("fancy", "luo")
val arrayOfUser: Array<UserInfo> = arrayOf(
            UserInfo("fancyluo", "音乐"),
            UserInfo("jack", "篮球"))

可以看到,我们使用 val 来修饰数组,在 Kotlin 中,数组是不可变的。上面数组里我们放的都是对象,那么基本类型的数组呢?Kotlin 中为了防止装箱拆箱的操作,为每个基本类型都专门定制了相应的数组类型,从而避免过度装箱的消耗。例如:IntArray,CharArray 等等

val arrayOfInt: IntArray = intArrayOf(1, 2, 3)
val arrayOfChar: CharArray = charArrayOf(‘中‘, ‘国‘)

七、区间
区间是一个数学上的概念,表示范围。Kotlin 中区间是 ClosedRange 接口的子类,一般比较常用的是 IntRange。

// 闭区间 [0,1024]
var range: IntRange = 0..1024
// 半开区间 [0,1024) = [0,1023]
var untilRange = 0 until 1024

fun main(args: Array<String>) {
    // 判断是否在区间中
    print(666 in range))
    // 区间迭代
      for (i in range) {
        print("$i, ")
    }
}

八、空类型安全

fun getName(): String{
    return null
}

上面的代码在编译器里是会报错的,普通情况下,Kotlin 中是不允许返回 null 类型的,这也就表明,我们在取这个值的时候,无需担心,直接使用即可。那我们就是想返回 null 呢? 在返回值后面加个 ? 即可。

fun getName(): String?{
    return null
}

但是,返回了空类型之后,要使用这个函数就不是这么简单了,如果你并不确定此函数返回的是否为空,那么你需要在函数后面加上一个?,如果你确定的知道此函数不会返回空,那么你可以在函数后面加上 !! 表示我明确知道返回值不为空,可放心使用。

// 此行代码会报错
var nameLength = getName().length

// 不确定是否为空
var nameLength = getName()?.length

// 确定不为空
var nameLength = getName()!!.length

// getName 不为空则返回值,为空则不再执行后面的逻辑
var nameLength = getName() ?: return

原文地址:https://blog.51cto.com/13983283/2363036

时间: 2024-10-14 02:44:18

Kotlin 基础 - 数据类型的相关文章

Kotlin基本数据类型

Kotlin基本数据类型 kotlin的基本数值类型包括Byte,Short,Int,Long,Float,Double等.与java有差别的是字符不属于数值类型,而是一个独立的数据类型. 而内存大小则Byte 8位,Short 16位,Int 32位,Long 64位,Float 32位,Double 64位.与Java基本没有差别. 字面常量 下面是所有类型的字面常量: 十进制:123 长整型以大写的L结尾:123L 16进制以0x开头:0x0F 2进制以0b开头:0b00001011 **

TypeScript学习指南第一章--基础数据类型

基础数据类型 为了搭建应用程序,我们需要使用一些基础数据类型比如:numbers,strings,structures,boolean等等. 在TypeScript中除了在JavaScript中常见的数据类型外还有一个非常使用的枚举类型(enumeration type). Boolean 最基础的数据类型莫过于只有True和false的布尔类型了,在TypeScript,JavaScript以及其它的很多数程序语言中我们使用关键字'boolean'. var isDone: boolean =

2015.9.30.基础数据类型以及输入输出语句

从今天开始不定期更新C语言基础教程,请参考教材(仅仅参考!)进行学习,本系列教程只写基础部分,不会掺杂复杂的细节,这些细节在后续会根据需要再加入,如果有不懂请自行百度尝试解决.该系列文章内容可能来源我本人或者zhrmoe(他的主页:http://zhrmoe.iflab.org)的编写.文章如果有错误欢迎批评指正,谢谢!转载请注明来自本站, //2015.9.30  基本输入输出 #include <stdio.h> /* 基础数据类型 char 字符 int 整数 double 小数 对应的

Python中的基础数据类型

Python中基础数据类型 1.数字 整型a=12或者a=int(2),本质上各种数据类型都可看成是类,声明一个变量时候则是在实例化一个类. 整型具备的功能: class int(object): """ int(x=0) -> int or long int(x, base=10) -> int or long Convert a number or string to an integer, or return 0 if no arguments are gi

Python 之路 Day02 -基础数据类型及编码详解

  基础篇 本章大纲: 字符编码和解释器编码详解 变量命名规则 基础数据类型(一) int 基础数据类型(二)  string 基础数据类型(三) bool 基础数据类型(四) list 基础数据类型(五) tuple 基础数据类型(六) dict 基础数据类型(七) set 补充可迭代对象的循环连接及enumerate输出 字符编码和解释器编码详解 一,编码的重要性: 1.1 文件编码和字符编辑编码及读取编码 #!/usr/bin/env python #-*- coding:utf-8 -*

[.net 面向对象编程基础] (3) 基础中的基础——数据类型

[.net 面向对象编程基础] (3) 基础中的基础——数据类型 关于数据类型,这是基础中的基础. 基础..基础..基础.基本功必须要扎实. 首先,从使用电脑开始,再到编程,电脑要存储数据,就要按类型存储,就跟我们买来衣服一样,裤子,上衣,冬天的,夏天的,总要分个类再放进衣柜中一样.越是高级的编程语言,数据类型分的越详细. 问题来了,这么多数据类型,我们是不是要一一记住,这真不是个省心的事情,不用怕,不用怕,不用怕,重要的事情说三遍. 重点:C#就15种数据类型. 准确来说,是15种预定义类型,

JavaScript的基础数据类型和表达式

Java Script的基础数据类型和表达式 基本的数据类型: number(数值)类型:可分为整数和浮点数 string(字符)类型:是用单引号“'”或者双引号“"”来说明的. boolean(布尔)类型:布尔类型的值true(对)或false(错). null和undefined:null表示一个“空”的值,undefind表示值未定义, &&:与运算,只有所有都为true,&&运算结果才是true. ||:或运算,只要其中一个true,||运算结果就是tru

【Swift】学习笔记(一)——熟知 基础数据类型,编码风格,元组,主张

自从苹果宣布swift之后,我一直想了解,他一直没有能够把它的正式学习,从今天开始,我会用我的博客来驱动swift得知,据我们了解还快. 1.定义变量和常量 var  定义变量,let定义常量. 比如: var test = 1 test = 2 //变量能够改变值 let test = 1 test = 2 //常量不能改变值,编译器会报错 var test1=1,test2=2,test3=3 //逗号分隔多个变量 2.添加类型标注 在 var test = 1 这个样例中.test被swi

halcon基础数据类型详解

#if defined(__CHAR_UNSIGNED__) || defined(__sgi) #define INT1 signed char /* integer, signed 1 Byte */ #define INT1_MIN SCHAR_MIN #define INT1_MAX SCHAR_MAX #else #define INT1 char /* integer, signed 1 Byte */ #define INT1_MIN CHAR_MIN #define INT1_M