IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> kotlin(二) 数据类型 -> 正文阅读

[移动开发]kotlin(二) 数据类型

?Kotlin 基本数据类型
Kotlin的引用类型? ?只提供引用类型这一种数据类型,出于更高性能的需要,Kotlin编译器会在Java字节码中修改为基本数据类型。
Java有两种数据类型: 引用类型(堆内存)??基本数据类型(栈内存)

Kotlin 的基本数值类型包括 Byte、Short、Int、Long、Float、Double 等。不同于 Java 的是,字符不属于数值类型,是一个独立的数据类型。

类型位宽度
Double64
Float32
Long64
Int32
Short16
Byte8

内置数据类型(常用)


类型?? ?描述
String?? ?字符串
Char?? ?单字符
Boolean?? ?true/false
Int?? ?整形
Double?? ?小数
List?? ?集合
Set?? ?无重复的元素集合
Map?? ?键值对的集合

比较两个数字

??在Kotlin中,用?==?检查两个字符串中的字符是否匹配,用?===?检查两个变量是否指向内存堆上同一对象,而在Java中?==?做引用比较,做内容比较时用equals方法。

  //字符串比较
    val str1 = "Kotlin"
    val str2 = "Kotlin"
    val str3 = "kotlin".replace("k","K")
    println("$str1-$str2-$str3")
    //比较的是内容,true
    println(str1 == str2)//true
    println(str1 == str3)//true
 
    //这里为什么是true,字符串内容不可变,Java和Kotlin有个字符串常量池
    println(str1 === str2)//true
    println(str1 === str3)//false

常量池:是为了方便快捷地创建某些对象而出现的,当需要一个对象时,就可以从池中取一个出来(如果池中没有则创建一个),则在需要重复创建相等变量时节省了很多时间。常量池其实也就是一个内存空间,常量池存在于方法区中。

String类也是Java中用得多的类,同样为了创建String对象的方便,也实现了常量池的技术。
?

equals

? ? val str1 = "Kotlin"
? ? val str2 = "Kotlin"
? ? val str4 = "kotlin"
?
? ? println(str1.equals(str2))//true
? ? println(str1.equals(str4))//false
? ??
? ? //第二个参数加true代表忽略大小写比较。
? ? //第二个参数加false代表不忽略大小写比较。
? ? println(str1.equals(str4,true))//true

布尔

布尔用 Boolean 类型表示,它有两个值:true 和 false。

若需要可空引用布尔会被装箱。

内置的布尔运算有:

|| – 短路逻辑或
&& – 短路逻辑与
! - 逻辑

和 Java 不一样,Kotlin 中的 Char 不能直接和数字操作,Char 必需是单引号?'?包含起来的。比如普通字符 '0','a'。

fun check(c: Char) {
    if (c == 1) { // 错误:类型不兼容
        // ……
    }
}

字符字面值用单引号括起来: '1'。 特殊字符可以用反斜杠转义。 支持这几个转义序列:\t、 \b、\n、\r、\'、\"、\\ 和 \$。 编码其他字符要用 Unicode 转义序列语法:'\uFF00'。

我们可以显式把字符转换为 Int 数字:

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

当需要可空引用时,像数字、字符会被装箱。装箱操作不会保留同一性。

字符串

一、字符串创建

????????String类表示char类型的数组。字符串是不可变的,这意味着长度和元素在创建后不能更改。因为字符串对象是不可变的,所以可以共享它们。

fun main() {
    val ch = charArrayOf('S', 'h', 'u', 'a', 'i', 'C', 'i')
    val str = String(ch)
    println(str)//ShuaiCi
}

字符串属性

属性描述
length: Int返回字符串序列的长度。
indices: IntRange返回当前?char?序列中有效字符索引的范围。
lastIndex: Int返回?char?序列中最后一个字符的索引。
   var string1 ="school"
    println(string1)
    println(string1.length.toString()+  "=="+string1.indices)// 6   0..5

类型转换

由于不同的表示方式,较小类型并不是较大类型的子类型,较小的类型不能隐式转换为较大的类型。 这意味着在不进行显式转换的情况下我们不能把 Byte 型值赋给一个 Int 变量。

val b: Byte = 1 // OK, 字面值是静态检测的
val i: Int = b // 错误

var c:Int=2
var d:String =c+"" //错误

我们可以代用其toInt()方法。

val b: Byte = 1 // OK, 字面值是静态检测的
val i: Int = b.toInt() // OK
var d:String =i.toString //ok

每种数据类型都有下面的这些方法,可以转化为其它的类型:

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

有些情况下也是可以使用自动类型转化的,前提是可以根据上下文环境推断出正确的数据类型而且数学操作符会做相应的重载。例如下面是正确的:

val l = 1L + 3 // Long + Int => Long
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-10-31 12:09:06  更:2022-10-31 12:12:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 22:41:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码