【教程】Kotlin语言学习笔记(二)——数据类型(持续更新)

文首标志
写在前面:
如果文章对你有帮助,记得点赞关注加收藏一波,利于以后需要的时候复习,多谢支持!


【Kotlin语言学习】系列文章

第一章 《认识Kotlin》
第二章 《数据类型》


文章目录

  • 【Kotlin语言学习】系列文章
  • 一、基本数据类型
    • (一)整数类型
    • (二)浮点类型
    • (三)字符类型
    • (四)布尔类型
  • 二、字符串
    • (一)字符串定义
    • (二)字符串模板
    • (三)字符串拼接
    • (四)字符串转义
  • 三、类型强制转换
  • 四、数学运算
    • (一)常见运算
    • (二)位运算


一、基本数据类型

(一)整数类型

在 Kotlin 中,整数类型表示整数值。Kotlin 提供了多个整数类型,以便根据需求选择合适的类型。

类型关键字位宽最小值最大值
字节型Byte8-128127
短整型Short16-3276832767
整型Int32-2^312^31-1
长整型Long64-2^632^63-1

在计算机当中,最小的数据存储单位就是位(Bit),而所有数字在储存的时候,都是二进制储存,而二进制中,8位称之为1个字节(Byte),位宽则是数据占用的位的总数。可以看到,不同的数据类型就占用了不同的位宽。
下面是对各种整数类型的变量声明示例。

val number = 100 // 默认是Int类型
val bigNumber = 8000000000 // 超过Int最大值,默认为Long类型
val longNumber = 20L // 在赋值数字后面增加后缀L声明Long类型
val byteNumber:Byte = 1 //在变量后用冒号声明Byte类型,再进行赋值

值得注意的是,所有未超过Int最大值的整型值初始化的变量都默认为Int类型,如果初始值超过了其最大值,那么将推断为Long类型。

(二)浮点类型

在 Kotlin 中,浮点类型表示带有小数部分的数字。Kotlin 提供了两种浮点类型:Float 和 Double。

类型关键字位宽
浮点型Float32
双精度浮点型Double64

下面是对两种浮点数类型的变量声明示例。

val defaultDouble = 3.14 // 输入小数默认为Double类型
val doubleNumber = 3.1415926535 // 小数位超过6位也默认是Double类型
val floatNumber = 3.1415926535f // 在赋值数字后面增加后缀f声明Float类型

Kotlin对于小数的默认推断是Double类型。如果需要显式地将一个小数指定为Float类型,则需要在数值尾部加入f或者F的字母后缀。由于Float类型十进位数是6位,所以上述示例中floatNumber实际值大小为3.1415927,后面就会出现进度丢失舍弃。

(三)字符类型

在 Kotlin 中,字符类型表示单个字符。Kotlin 使用 Char 类型来表示字符。Char 类型是一个 16 位的无符号整数,可表示 Unicode 字符。

要声明一个字符变量,可以使用 char 或者 Char 关键字,并使用单引号''将字符括起来。

val letter: Char = 'A'// 用单引号括起来的单个字符

(四)布尔类型

在 Kotlin 中,布尔类型用于表示逻辑值。Kotlin 提供了一个 Boolean 类型,只有两个可能的取值:truefalse

val isVisible0:Boolean = false// 布尔值中的假,返回0
val isVisible1:Boolean = true// 布尔值中的真,返回1

二、字符串

在 Kotlin 中,String 被视为引用类型,并且不属于基本数据类型。然而,由于 Kotlin 对于基本数据类型提供了很多方便的语法和操作符,使得它们在使用上更接近于原始类型。在 Kotlin 中,这些基本数据类型具有与引用类型类似的行为,并且享受了编译器对它们的多态优化。

String 类型是不可变的,也就是说,一旦创建了一个字符串对象,就不能对其进行修改。如果需要修改字符串,可以使用字符串的一些方法和操作符来创建新的字符串对象。

(一)字符串定义

要声明一个字符串变量,可以使用 String 关键字,并使用双引号""将字符串括起来。

val str:String = "1234567890"

由于字符串String被视为引用类型,就可以通过[]引用来访问字符串中具体的某个字符。

val str:String = "1234567890"
val strNumber2:Char = str[1]// 元素计数从0开始,1即代表第二个
println("strNumber2:"+strNumber2)

通过println可以打印出strNumber2的结果。返回结果如下。

strNumber2:2

由此可以确定,通过访问具体的元素,可以从字符串中单独取出并输出。

(二)字符串模板

字符串字面值可以包含模板表达式,即一些小段代码,会求值并把结果合并到字符串中。模板表达式以美元符$开头,有一个简单的名字构成。

val number = 100
println("The result is $number")

返回结果如下。

The result is 100

不仅是简单的变量名,使用${}括起来的任意表达式都能够在字符串中被识别为代码输出。

val text = "This is text"
println("Text length is ${text.length}")

其中,text.length是访问了text的衡量长度方法,可以得到变量的长度。
返回结果如下。

Text length is 12

同时,字符串与转义字符串内部都支持模板,如果需要在原始字符串中表示字面值美元符$,则可以使用下列语法。

val price = "${'$'}9.99 "

输出结果如下。

$9.99

(三)字符串拼接

Kotlin的字符串可以使用加法操作符+实现字符串的拼接,不仅适用于连接字符串和字符串,同时也支持连接字符串与其他类型的值。

println("I am " + 10 + " years old!")

返回结果如下。

I am 10 years old!

(四)字符串转义

Kotlin有两种类型的字符串字面值:转义字符串可以有转义字符,以及原始字符串可以包含换行以及任意文本。转义字符有以下用法:

  • 使用\n换行
  • 使用反斜杠\对双引号""进行转义
  • 使用三个引号即分界符"""将内部任何字符转换为字符串,还可以通过使用trimMargin()函数去除前导空格

具体示例如下。

println("Hello\nWorld!")// \n换行 
println("He says:\"Yes!\"")// \反斜杠转义双引号 
println("""val number = 1val char = 'c'""".trimIndent()
)// 分界符内部没有转义并且可以包含换行以及其他任何字符

返回结果如下。

Hello
World!
He says, “Yes!”
val number = 1
val char = ‘c’

三、类型强制转换

数据类型之间可以通过调用toType()方法来强行转换类型。

转换类型方法
BytetoByte()
ShorttoShort()
InttoInt()
LongtoLong()
FloattoFloat()
DoubletoDouble()
ChartoChar()
StringtoString()

示例如下。

val before:Int = 100
println("transform to string:${before.toString()}")

返回结果如下。

transform to string:100

四、数学运算

(一)常见运算

在 Kotlin 中,支持以下常见的算术运算符:

符号名称作用
+加法运算符用于执行两个操作数的相加运算
-减法运算符用于执行两个操作数的相减运算
*乘法运算符用于执行两个操作数的相乘运算
/除法运算符用于执行两个操作数的相除运算
%取模运算符用于获取两个操作数相除后的余数
++自增运算符用于将操作数的值增加1
--自减运算符用于将操作数的值减少1

(二)位运算

Kotlin中的位运算采用了中缀函数方式调用具名函数。

使用名称描述示例
and&位与对两个二进制数的对应位进行与操作,只有当两个位都为1时,结果位才为1a and ba & b
or|位或对两个二进制数的对应位进行或操作,只有当至少一个位为1时,结果位才为1a or ba | b
xor^位异或对两个二进制数的对应位进行异或操作,只有当两个位不相同时,结果位才为1a xor ba ^ b
inv位非对一个二进制数的每个位取反,0 变为 1,1 变为 0inv(a)!a
shl<<左移将一个二进制数的所有位向左移动指定的位数,左侧的位将被丢弃,右侧空出的位用0填充a shl ba << b
shr>>右移将一个二进制数的所有位向右移动指定的位数,右侧的位将被丢弃,左侧空出的位用符号位填充(对于正数用0填充)a shr ba >> b
ushr>>>无符号右移将一个二进制数的所有位向右移动指定的位数,右侧的位将被丢弃,左侧空出的位用0填充a ushr ba >>> b

我是EC,一个永远在学习中的探索者,关注我,让我们一起进步!

文末标志

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/470521.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【计算机网络】网络层之IP协议

文章目录 1.基本概念2.协议头格式3.网段划分4.特殊的IP地址5.IP地址的数量限制6.私有IP地址和公网IP地址7.路由 1.基本概念 IP地址是定位主机的&#xff0c;具有一个将数据报从A主机跨网络可靠的送到B主机的能力。 但是有能力就一定能做到吗&#xff0c;只能说有很大的概率。…

讲解用Python处理Excel表格

我们今天来一起探索一下用Python怎么操作Excel文件。与word文件的操作库python-docx类似&#xff0c;Python也有专门的库为Excel文件的操作提供支持&#xff0c;这些库包括xlrd、xlwt、xlutils、openpyxl、xlsxwriter几种&#xff0c;其中我最喜欢用的是openpyxl&#xff0c;这…

【论文解读】TS2Vec: Towards Universal Representation of Time Series

TS2Vec: Towards Universal Representation of Time Series 摘要 这篇论文介绍了TS2Vec&#xff0c;这是一个用于在任意语义级别上学习时间序列表示的通用框架。与现有方法不同&#xff0c;TS2Vec以层次化方式在增强的上下文视图上执行对比学习&#xff0c;从而为每个时间戳提…

【c语言】字符串常见函数 下

&#x1f388;个人主页&#xff1a;甜美的江 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;c语言 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步&a…

混合键合(Hybrid Bonding)工艺解读

随着半导体技术的持续演进&#xff0c;传统的二维芯片缩放规则受到物理极限的挑战&#xff0c;尤其是摩尔定律在微小化方面的推进速度放缓。为了继续保持计算性能和存储密度的增长趋势&#xff0c;业界开始转向三维集成电路设计与封装技术的研发。混合键合技术就是在这样的背景…

Git基础使用

Git 要想了解Git&#xff0c;首先需要我们了解一下VCS——版本控制系统&#xff08;version control system&#xff09; VCS 版本控制是一种记录一个或若干文件内容变化&#xff0c;以便将来查阅特定版本修订情况的系统。版本控制系统不仅可以应用于软件源代码的文本文件&a…

python调用智谱ai 大模型的完整步骤 (国内的 AI 大模型 对话)

要使用Python调用智谱AI的API进行异步调用&#xff0c;您需要遵循以下步骤&#xff1a; 1. **获取API密钥**&#xff1a; - 您需要从智谱AI平台获取一个API密钥&#xff08;API Key&#xff09;&#xff0c;这个密钥将用于所有API请求的身份验证。 2. **安装…

机器学习网格搜索超参数优化实战(随机森林) ##4

文章目录 基于Kaggle电信用户流失案例数据&#xff08;可在官网进行下载&#xff09;数据预处理模块时序特征衍生第一轮网格搜索第二轮搜索第三轮搜索第四轮搜索第五轮搜索 基于Kaggle电信用户流失案例数据&#xff08;可在官网进行下载&#xff09; 导入库 # 基础数据科学运…

单片机学习笔记---LCD1602功能函数代码

目录 LCD1602.c 模拟写指令的时序 模拟写数据的时序 初始化 显示字符 显示字符串 显示数字 显示有符号的数字 显示16进制数字 显示二进制数 LCD1602.h main.c 上一篇讲了LCD1602的工作原理&#xff0c;这一节开始代码演示&#xff01; 新创建工程&#xff1a;LCD1…

Java学习第十四节之多维数组和Arrays类讲解

多维数组 package array;public class ArrayDemo05 {public static void main(String[] args) {//[4][2] 面向对象/*1,2 array[0]2,3 array[1]3,4 array[2]4,5 array[3]*/int[][] array {{1,2},{2,3},{3,4},{4,5}};for (int i 0; i <array.length; i) {for (int…

MyBatis篇----第六篇

系列文章目录 文章目录 系列文章目录前言一、什么是 MyBatis 的接口绑定?有哪些实现方式?二、使用 MyBatis 的 mapper 接口调用时有哪些要求?三、Mapper 编写有哪几种方式?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳…

Java实现课程案例资源库系统 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 管理员需求分析2.2 用户需求分析 三、系统设计3.1 业务流程设计3.1.1 管理员业务流程设计3.1.2 用户业务流程设计3.1.3 首页功能模块及业务流程分析3.1.4 案例资源中心功能模块及业务流程分析3.1.5 用户信息中心功能模块…