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,一经查实,立即删除!

相关文章

C++期末考试选择题题库100道判断题的易错知识点复习程序分析题30道

今天备考C,看到了一些好的复习资料,整合一起给大家分享一下 一起来交流编程吧【CSDN app】: http://qm.qq.com/cgi-bin/qm/qr?_wv1027&kx9pL9ccIHGKNLE0CWviAqQ_q6HzxomLW&authKeyVslKe623ptw8VRepda%2Bh0Ttr8Ruz8v%2FBW5HpVzyTWU7…

深入了解Java多线程编程:JVM内存模型与同步机制

多线程编程是当今软件开发中不可避免的话题之一。在Java中,了解JVM内存模型及相关概念对编写正确、高效的多线程代码至关重要。本文将深入探讨JVM内存模型、重排序、内存屏障、happen-before关系、主内存、工作内存以及同步机制,并通过具体案例进行原理分…

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万花筒】通往高效通信的道路:揭秘Java网络库的奥秘

网络通信艺术:深入探索Java网络通信 前言 Java网络通信是构建分布式系统和构想强大网络应用的核心要素。本文将深入探讨几个重要的Java网络通信库,从基础的Socket到高性能的Netty、灵活的Apache MINA、现代的gRPC,以及通用的OkHttp。通过对…

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…

ipad协议滑块讲解-3(2000038登录滑块)

请使用python进行编译失调,切勿用于非法用途!! 创建main.js脚本 代码如下 const {VM,VMScript} require("vm2"); const fs require("fs"); const {read} require("./env/main"); const {readJsCode} re…

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

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