当前位置: 首页 > news >正文

kotlin的数据类型和类型转换

在 Kotlin 中,数据类型是变量或表达式的属性,确定了存储的数据类型以及可以在该数据上执行的操作。Kotlin 支持与 Java 类似的基本数据类型,但还引入了一些增强的数据类型和类型安全的特性。

一,基本数据类型

Byte:8 位有符号整数
Short:16 位有符号整数
Int:32 位有符号整数
Long:64 位有符号整数
Float:32 位单精度浮点数
Double:64 位双精度浮点数
Char:16 位 Unicode 字符
Boolean:表示 true 或 false

二,类型推断

Kotlin 支持类型推断,意味着编译器可以根据上下文自动确定变量的数据类型。例如:

val age = 25 // 推断为 Int 类型
val name = "John" // 推断为 String 类型

三,类型转换

在 Kotlin 中,类型转换分为隐式类型转换和显式类型转换。

隐式类型转换:在不会导致数据丢失的情况下,Kotlin 会自动进行类型转换。

val intValue: Int = 42
val doubleValue: Double = intValue.toDouble() // 隐式类型转换

显式类型转换:如果可能导致数据丢失,需要进行显式类型转换。使用 toXxx() 函数进行转换。

val doubleValue: Double = 3.14
val intValue: Int = doubleValue.toInt() // 显式类型转换

四,类型检查与转换

is 运算符用于检查变量是否是某个类型的实例:

if (value is String) {// 处理字符串类型
}

as 运算符用于类型转换,但它在类型不兼容时会抛出 ClassCastException 异常。

val stringValue: Any = "Hello"
val castedString: String = stringValue as String

as? 运算符用于安全的类型转换,如果类型不匹配,会返回 null。

val stringValue: Any = "Hello"
val castedString: String? = stringValue as? String

五,类型转换函数

Kotlin 提供了一些内置的类型转换函数来处理数据类型之间的转换:

toByte(): 转换为 Byte 类型
toShort(): 转换为 Short 类型
toInt(): 转换为 Int 类型
toLong(): 转换为 Long 类型
toFloat(): 转换为 Float 类型
toDouble(): 转换为 Double 类型
toChar(): 转换为 Char 类型
toString(): 转换为 String 类型
这些函数可以在大多数数据类型之间进行转换。

使用类型别名:
Kotlin 还允许你使用类型别名来简化代码。通过 typealias 关键字,你可以为现有的数据类型创建别名。这不是类型转换,但可以使代码更加清晰。

typealias CustomString = Stringval message: CustomString = "Hello, World!"

字符串转换为数字:
如果需要将字符串转换为数字,可以使用 toInt(), toDouble() 等方法。注意要处理可能的异常,因为转换失败会抛出 NumberFormatException。

val strNumber = "42"
val intNumber = strNumber.toIntOrNull() ?: 0 // 转换为 Int 或默认为 0

数字转换为字符串:
将数字转换为字符串可以使用数字的 toString() 方法。

val intNumber = 42
val strNumber = intNumber.toString() // 转换为字符串

自定义类型转换函数:
你也可以定义自己的类型转换函数,例如,将一个自定义类转换为另一个类的实例。这需要在类的定义中添加一个扩展函数。

class Person(val name: String, val age: Int)class Employee(val person: Person, val department: String)fun Person.toEmployee(department: String): Employee {return Employee(this, department)
}fun main() {val person = Person("John", 30)val employee = person.toEmployee("IT")
}

总之,在 Kotlin 中,数据类型转换涵盖了从基本数据类型到对象类型的范围,以及不同对象类型之间的转换。使用类型转换函数、类型别名和自定义转换函数,你可以在需要的时候轻松地处理数据类型转换。确保在转换过程中处理可能的异常情况。

相关文章:

kotlin的数据类型和类型转换

在 Kotlin 中,数据类型是变量或表达式的属性,确定了存储的数据类型以及可以在该数据上执行的操作。Kotlin 支持与 Java 类似的基本数据类型,但还引入了一些增强的数据类型和类型安全的特性。 一,基本数据类型 Byte:8…...

常见架构类型

目录 1.单机架构 2.应用数据分离架构 3.读写分离架构 4.冷热分离架构 5.垂直分库架构 6.微服务架构 7.容器编排架构 1.单机架构 单机架构是简单的将应用服务和数据库服务部署到同一台机器上。 缺点:存在很大的性能限制。 2.应用数据分离架构 引入负载均衡&a…...

搭建Web服务器并用cpolar发布至公网访问

本地电脑搭建Web服务器并用cpolar发布至公网访问 文章目录 本地电脑搭建Web服务器并用cpolar发布至公网访问前言1. 首先在电脑安装PHPStudy、WordPress、cpolar2. 安装cpolar,进入Web-UI界面3. 安装wordpress4. 进入wordpress网页安装程序5. 利用cpolar建立的内网穿…...

NanoPi NEO移植LVGL8.3.5到1.69寸ST7789V屏幕

移植前准备 移植好fbtft屏幕驱动 参考链接:友善之臂NanoPi NEO利用fbtft驱动点亮1.69寸ST7789V2屏幕 获取源码 名称地址描述lvglhttps://github.com/lvgl/lvgl.gitlvgl-8.3.5lv_drivershttps://github.com/lvgl/lv_drivers.gitlv_drivers-6.1.1 创建工程目录 创…...

阿里云服务区ECS,申请免费的服务器之后,如何使用xshell 登陆,找不到匹配的host key 算法

目录 1 问题2 解决 1 问题 当在阿里云免费领取服务器之后,使用xshell 登陆不上,提示 找不到匹配的host key 算法 或者 找不到匹配的keyexchange算法 咋解决 2 解决 在在服务器端配置文件:/etc/ssh/sshd_config # 在行尾增加",ecdh…...

【CTF-web】备份是个好习惯(查找备份文件、双写绕过、md5加密绕过)

题目链接:https://ctf.bugku.com/challenges/detail/id/83.html 经过扫描可以找到index.php.bak备份文件,下载下来后打开发现是index.php的原代码,如下图所示。 由代码可知我们要绕过md5加密,两数如果满足科学计数法的形式的话&a…...

C#和Java的大端位和小端位的问题

C#代码里就是小端序,Java代码里就是大端序, 大端位:big endian,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,也叫高尾端 小端位:little endian,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存…...

如何在 iOS 上安装并使用 ONLYOFFICE 文档

借助 iOS 版文档应用,您可在移动端设备上访问存储于 ONLYOFFICE 账户中的文件,查看和编辑现有文本文档、电子表格和演示文稿,创建新文档并对其进行整理,以及连接第三方云存储服务。您可与其他门户网站用户协作编辑文档&#xff0c…...

【AI】如何用AI生成XMind思维导图

哈喽,大家好,我是木头左,物联网搬砖工一名,致力于为大家淘出更多好用的AI工具! 背景 随着人工智能技术的不断发展,越来越多的应用场景开始涉及到AI技术。在办公软件领域,XMind是一款非常受欢迎…...

k8s问题汇总

作者前言 本文章为记录使用k8s遇到的问题和解决方法,文章持续更新中… 目录 作者前言正常配置ingress,但是访问错误添加工作节点报错安装k8s报错使用kubectl命令报错container没有运行安装会出现kubelet异常,无法识别删除k8s集群访问dashboa…...

打造专属照片分享平台:快速上手Piwigo网页搭建

文章目录 通过cpolar分享本地电脑上有趣的照片:部署piwigo网页前言1.Piwigo2. 使用phpstudy网页运行3. 创建网站4. 开始安装Piwogo 总结 🍀小结🍀 🎉博客主页:小智_x0___0x_ 🎉欢迎关注:&#x…...

OpenAI全球招外包大军,手把手训练ChatGPT取代码农 ; 码农:我自己「杀」自己

目录 前言 OpenAI招了一千多名外包人员,训练AI学会像人类一样一步步思考。如果ChatGPT「学成归来」,码农恐怕真的危了? 码农真的危了! 当时OpenAI也说,ChatGPT最合适的定位,应该是编码辅助工具。 用Cha…...

船舶法兰盘法兰管件3D扫描尺寸测量|三维扫描检测|CAV测量-CASAIM

第一章 服务背景 船舶建造多采用分段建造法,即将零件、预装好的部件在胎架上组合焊接成分段或总段,然后由船台装配成整船的建造方法。而当船体合拢组装时,在船体上遍布着各种各样的管道,这些管道都需要互相完全适配以确保船体安装…...

每天一道leetcode:1218. 最长定差子序列(动态规划中等)

今日份题目: 给你一个整数数组 arr 和一个整数 difference,请你找出并返回 arr 中最长等差子序列的长度,该子序列中相邻元素之间的差等于 difference 。 子序列 是指在不改变其余元素顺序的情况下,通过删除一些元素或不删除任何…...

C#的 Settings.Settings配置文件的使用方法

1、定义 在Settings.settings文件中定义配置字段。把作用范围定义为:User则运行时可更改(用户范围的字段数据更改存储在用户信息中,不在该程序文件中),Applicatiion则运行时不可更改。可以使用数据网格视图(VS软件的Properties 下面的Setting…...

神经网络基础-神经网络补充概念-35-为什么正则化可以减少过拟合

概念 正则化可以减少过拟合的原因在于它通过限制模型的复杂性来约束参数的取值范围,从而提高了模型的泛化能力。过拟合是指模型在训练集上表现很好,但在未见过的数据上表现不佳,这通常是因为模型过于复杂,过多地拟合了训练数据中…...

Glide 的超时控制相关处理

作者:newki 前言 Glide 相信大家都不陌生,各种源码分析,使用介绍大家应该都是烂熟于心。但是设置 Glide 的超时问题大家遇到过没有。 我遇到了,并且掉坑里了,情况是这样的。 调用接口从网络拉取用户头像&#xff0c…...

使用requests如何实现自动登录

不知道大家有没有注意到,好多网站我们登录过后,在之后的某段时间内访问该网页时,不会给出请登录的提示,时间到期后就会提示请登录!这样在使用爬虫访问网页时还要登录,打乱我们的节奏,那么如何使…...

【代码随想录-Leetcode第六题:209. 长度最小的子数组】

209. 长度最小的子数组 题目思路代码实现 题目 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回…...

部署LVS-DR群集

LVS的工作模式及工作过程 LVS 有三种负载均衡的模式,分别是VS/NAT(nat 模式)、VS/DR(路由模式)、VS/TUN(隧道模式)。 1、NAT模式(VS-NAT) 原理:首先负载均…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库&#xff08;如 Redisson&#xff09;相比于开发者自己基于 Redis 命令&#xff08;如 SETNX, EXPIRE, DEL&#xff09;手动实现分布式锁&#xff0c;提供了巨大的便利性和健壮性。主要体现在以下几个方面&#xff1a; 原子性保证 (Atomicity)&#xff…...

云原生安全实战:API网关Kong的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关&#xff08;API Gateway&#xff09; API网关是微服务架构中的核心组件&#xff0c;负责统一管理所有API的流量入口。它像一座…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为&#xff1a;一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

PydanticAI快速入门示例

参考链接&#xff1a;https://ai.pydantic.dev/#why-use-pydanticai 示例代码 from pydantic_ai import Agent from pydantic_ai.models.openai import OpenAIModel from pydantic_ai.providers.openai import OpenAIProvider# 配置使用阿里云通义千问模型 model OpenAIMode…...

智能体革命:企业如何构建自主决策的AI代理?

OpenAI智能代理构建实用指南详解 随着大型语言模型&#xff08;LLM&#xff09;在推理、多模态理解和工具调用能力上的进步&#xff0c;智能代理&#xff08;Agents&#xff09;成为自动化领域的新突破。与传统软件仅帮助用户自动化流程不同&#xff0c;智能代理能够自主执行工…...

构建Docker镜像的Dockerfile文件详解

文章目录 前言Dockerfile 案例docker build1. 基本构建2. 指定 Dockerfile 路径3. 设置构建时变量4. 不使用缓存5. 删除中间容器6. 拉取最新基础镜像7. 静默输出完整示例 docker runDockerFile 入门syntax指定构造器FROM基础镜像RUN命令注释COPY复制ENV设置环境变量EXPOSE暴露端…...