Kotlin-变量定义,与类型

Kotlin-变量定义

  • 变量定义
    • 整型
    • 浮点型
    • 字符型
    • 整型之间的转换
    • Boolean类型
    • Null安全
    • 安全调用
      • Elvis运算
    • 字符串

变量定义

Kotlin可以定义的时候不标明数据的数据类型,编译器会根据初始值确定类型

fun main() {var b:Intvar name = "crazyit.org"//声名变量的时候指定初始值,编译器会根据初始值确定该变量的类型为Stringb = 20
//    name = 12 //①The integer literal does not conform to the expected type Stringvar sum :String = 500 //当变量的类型已经确定,但是用户赋值不一致时会报错val a = "你好"
//    a = "123" //②Val cannot be reassigned
}

整型

提供4种类型:Byte、Short、Int、Long
在这里插入图片描述
但是Kotlin时安全语言,所以不允许为空,如果需要存储空值的话就需要使用Byte?、Short?、Int?、Long?。
普通类型的整数类型会映射到java的基本类型;带?的数据类型会映射到基本类型的包装类型,
比如:Int类型映射到java的int类型,Int?类型映射到java的Integer类型
Kotlin不支持八进制的整数

浮点型

Kotlin的浮点型又有两种
1、Float
2、Double
除此之外,在Kotlin中还有3个特殊的浮点型数值:正无穷大、负无穷大和非数,例如,使用一个正数除以0.0或对负数将得到正无穷大数值,使用一个负数除以0.0将得到负无穷大数值,0.0除以0.0或对负数开方将得到一个非数
在这里插入图片描述

fun main() {var af1=5.2345556fprintln(af1) //输出5.2345557
//    var af2:Float = 25.2345 //会报错,因为25.234默认时Double//f1的类型为Doublevar f1 = 5.12e2println("f1的值为${f1}")var a= 0.0println("5.0/a的值为:${5.0/a}") //5.0/a的值为:Infinity(无穷大)//所有的正无穷数都相等println("${5.0/a == 5000/a}") //trueprintln("-5.0/a的值为:${-5.0/a}") //-5.0/a的值为:-Infinityvar nan :Double = a/aprintln("${nan}") //NaN,表示非数println("${nan === nan}") //false 非数自己与自己不相等
}

字符型

字符型通常表示单个字符,字符型值必须使用单引号(')括起来。在Kotlin中char类型就是简简单单的字符型,不能当作整型使用

整型之间的转换

Kotlin与java不同,Kotlin不支持取值范围小的数据类型隐式转换为取值范围大的类型。
在这里插入图片描述
Kotlin要求不同整型的变量之间或值之间必须进行显示转换
Any类型是所有Kotlin的根父类

Boolean类型

Null安全

    var str= "fkit"//由于 str 转换为 Int 有可能失败,故 num 有可能没有值//因此不能使用 Int 来声明 num 的类型var num1: Int = str.toIntOrNull() //失败var num2: Int? = str.toIntOrNull() //成功println (num1)

安全调用

  user?.dog?.name

如果user属性不为空则返回dog熟悉,如果dog属性不为空则返回dog的name属性,这就是Spring EL的安全调用,使用 “?.”进行安全调用

Elvis运算

var len = b?.length?:-1

?:是Elvis运算符,如果?: 左边的表达式不为null,则返回左边表达式的值,否则则返回?:右边表达式的值,由于在Kotlin中retuen和throw都属于是表达式,因此他们也都可以用在“?:”运算符的右边。

字符串

用三个引号引起来的部分都是字符串的内容,包括换行等各种特殊的字符

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

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

相关文章

Rust-数组

数组是一个容器,它在一块连续空间内存中,存储了一系列的同样类型的数据。 数组中元素的占用空间大小必须是编译期确定的。 数组本身所容纳的元素个数也必须是编译期确定的,执行阶段不可变。 如果需要使用变长的容器,可以使用标…

接雨水的四种姿势——一篇文章彻底弄懂接雨水问题

前言 leetcode 42. 接雨水是一道业内著名的hard题,多次出现在面试场上,经久不衰,难住了一届又一届的候选人。 作为leetcode上热度最高的题目之一,题目评论区也是好一番热闹景象。有人表示看了三天做不出来,有人在评论…

Kubernetes (十一) 存储——Secret配置管理

一. 简介 从文件创建 echo -n admin > ./username.txt echo -n westos > ./password.txt kubectl create secret generic db-user…

蓝凌EIS智慧协同平台 doc_fileedit_word.aspx 存在 SQL注入漏洞

产品简介 蓝凌EIS智慧协同平台是一款专为企业提供高效协同办公和团队合作的产品。该平台集成了各种协同工具和功能,旨在提升企业内部沟通、协作和信息共享的效率。 漏洞概述 由于蓝凌EIS智慧协同平台 doc_fileedit_word.aspx接口处未对用户输入的SQL语句进行过滤…

NUS CS1101S:SICP JavaScript 描述:四、元语言抽象

原文:4 Metalinguistic Abstraction 译者:飞龙 协议:CC BY-NC-SA 4.0 …魔法就在于文字——Abracadabra,开门,以及其他——但一个故事中的魔法词在另一个故事中并不神奇。真正的魔法是理解哪些词起作用,何时…

Java 实现单链表

文章目录 节点类定义单链表类总结 单链表是一种常用的数据结构,它由若干个节点(Node)组成,每个节点包含两部分:一部分是数据域,用于存储数据;另一部分是指针域,用于指向下一个节点。…

Mybatis实现映射,一次查询和嵌套查询

1.实现映射 Mybatis的最大魅力就在于它的语句映射。实现映射一般有一下三种方法: 当我们在数据库的列名和java中的属性名完全相同时,mybatis会自动映射并将查询结果封装。 对于由多个单词组成的名字时(例如studentgender)&…

时序预测 | Matlab基于灰色隐马尔可夫模型(HMMP-GM11)的时间序列预测

时序预测 | Matlab基于灰色隐马尔可夫模型(HMMP-GM11)的时间序列预测 目录 时序预测 | Matlab基于灰色隐马尔可夫模型(HMMP-GM11)的时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 灰色HMMP-GM11改进模型,通过引入隐马尔可夫模型(HMM)来对原始数据进行状态分…

单调栈练习(五)— 子数组的最小值之和

题目 同样的LeetCode原题:题目链接 给定一个整数数组 arr,找到 min(b) 的总和,其中 b 的范围为 arr 的每个(连续)子数组。 由于答案可能很大,因此 返回答案模 10^9 7 。 思路 暴力解 先来说暴力解的思路…

OpenssH 漏洞修复

文章目录 OpenSSH 漏洞修复需求:准备环境配置阿里云yum源关闭防火墙 && SELinux安装 telnet-server安装 zlib 软件包安装OpenssL安装 OpenssH报错信息 OpenSSH 漏洞修复 场景: CentOS Stream 9 系统ssh默认版本一般是OpenSSH_8.7p1 ,…

【国内访问github不稳定】可以尝试fastgithub解决这个问题

1、下载 https://github.com/dotnetcore/FastGithub https://github.com/dotnetcore/FastGithub/releases 官网下载即可,比如,我用的是这个:fastgithub_osx-x64.zip(点这里下载) 2、安装 如下图双击启动即可 3、…

科研绘图(二)气泡图

气泡矩阵图(Bubble Matrix Plot),通常用于显示三个变量之间的关系。这种图表类型将数据点表示为气泡的形式,其中气泡的大小通常表示第三个数值变量的大小。图表的X轴和Y轴代表两个分类或定量变量。颜色可能代表另一个分类变量或是…

CAN总线通信详解 (超详细配34张高清图)

CAN总线通信详解 (超详细配34张高清图) 1. CAN总线历史 CAN 是 Controller Area Network 的缩写(以下称为 CAN),是 ISO国际标准化的串行通信协议。 在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求&#…

Python爬虫---scrapy shell 调试

Scrapy shell是Scrapy提供的一个交互式shell工具,它可以帮助我们进行爬虫的开发和调试。可以使用它来测试xpath或css表达式,查看它们是如何工作的,以及它们从你试图抓取的网页中提取的数据。它允许你在编写spider时交互地测试表达式&#xff…

图像异或加密及唯密文攻击

异或加密 第一种加密方式为异或加密,异或加密的原理是利用异或的可逆性质,原始图像的像素八位bit分别与伪随机二进制序列异或,得到的图像就为加密图像。如下图对lena图像进行加密。 伪随机序列为一系列二进制代码,它受加密秘钥控…

CSS样式学习

html超文本传输标签&#xff0c;属性等权重 outline 标签轮廓 <input type"text"> <textarea cols"30" rows"10"></textarea> outline: none; 表示无轮廓 &#xff08;开发时用的比较多&#xff09; CSS 轮廓&#xff…

数据结构入门到入土——栈(Stack)和队列(Queue)

目录 一&#xff0c;栈&#xff08;Stack&#xff09; 1.1 概念 1.2 栈的使用 1.3 栈的模拟实现 1.4 栈的应用场景 1.5 栈&#xff0c;虚拟机栈&#xff0c;栈帧有什么区别&#xff1f; 二&#xff0c;队列&#xff08;Queue&#xff09; 2.1 概念 2.2 队列的使用 2.3 …

前端js调用Lodop实现云打印

一、下载Lodop控件 官网&#xff1a;下载中心 - Lodop和C-Lodop官网主站 二、解压后安装 双击进行安装&#xff0c;里面有些页面文件是一些教程案例 勾选云服务工作模式 安装成功会自动启动 浏览器访问地址&#xff1a;http://localhost:8000/ 首页最下面有个教程案例跳转地址&…

DNS 域名解析

一 、名字解析介绍和DNS 当前TCP/IP网络中的设备之间进行通信&#xff0c;是利用和依赖于IP地址实现的。但数字形式的IP地址是很难记忆的。当网络设备众多&#xff0c;想要记住每个设备的IP地址&#xff0c;可以说是"不可能完成的任务"。那么如何解决这一难题呢&…

蓝桥杯单片机进阶教程4——需要分配进程的模块

前言&#xff1a; 【蓝桥杯单片机保姆级教学】 https://www.bilibili.com/video/BV1h3411m7Aw/?p117&share_sourcecopy_web&vd_sourcec4fc67867c5218768e783d04475bc5a2 P117-118 比赛的时候也按照这个顺序来写 一、数码管显示 分析考题 &#xff08;1&#xff09;…