Kotlin的变量和数据类型

13 篇文章 2 订阅

什么是变量和数据类型

为了方便新手阅读,在这里我们简单介绍下变量和基本数据类型的概念,老司机跳过即可。


首先我们先来搞清楚一件事就是我们编写的程序实际上都是在处理数据。不管是视频,图片,还是文字,数字等,都是数据,只不过呈现出来的方式不同。

那我们怎么才能操作这些数据呢?
这个时候,我们就需要变量了。

变量可以理解为存储数据的容器,用来描述数据,比如在程序中,一个人的名字可以用name这个变量来描述,年龄可以用age来描述等
我们知道了可以用name表示名字,age表示年龄,但是在生活中,名字一般都是文字,年龄都是数字。那在程序中我们要怎么区分呢?别担心,编程语言已经给我们定义好了一些基本的数据类型,可以用来描述不同的数据。

变量声明

我们先来看看怎么声明变量


在kotlin中变量的声明是用var关键字

例如:

  var num:Int=1//声明一个变量  变量名为num  类型为Int  相当于num就是一个容器,里面放了一个值是  数字1

var表示声明了一个变量,后面num就是变量的名称,变量名称后面的:Int表示这个变量是Int类型的。这个是固定写法,记着就好。


    var num:Int=1//声明一个变量  变量名为num  类型为Int
    num=3//重新给变量num赋值为3

声明变量后我们可以重新给变量赋值

val关键字用于声明一个常量,相当于java中用final修饰的变量,常量可以看做是特殊的变量,特殊之处在于声明的时候必须要赋值,赋值过后就不能再修改它的值了。就好比我们的身份证号,正常情况下一旦定下来是不会改变的,这个时候在程序中我们就可以用常量来表示,常量名一般都是全大写的。

  val VALUE:Int=4//声明一个常量,值为4  

类型推断

kotlin在声明变量时会根据首次赋值自动推断变量的类型,这个用起来就很爽了

    var name="yzq"//自动推断name类型为String
    var age=24//自动推断age类型为Int

数据类型


再来看看数据类型。

数字类型

数字类型主要包括整型(整数)和浮点型(小数),主要有以下几种类型


Byte 字节 8位 值范围 -128 — 127

    var byte:Byte=1
    var minByte=Byte.MIN_VALUE//-128
    var maxByte=Byte.MAX_VALUE//127

Short 短整型 16位 值范围 -32768 —— 32767

    var shortNum:Short=1
    var minShort=Short.MIN_VALUE//-32768
    var maxShort=Short.MAX_VALUE//32767

Int 整型 32位 值范围 -2147483648 —— 2147483647

    var intNum:Int=1
    var minInt=Int.MIN_VALUE//-2147483648
    var maxInt=Int.MAX_VALUE//2147483647

Long 长整型 64位 直范围 -9223372036854775808 —— 9223372036854775807

    var longtNum:Long=1
    var minLong=Long.MIN_VALUE//-9223372036854775808
    var maxLong=Long.MAX_VALUE//9223372036854775807

**Float 单精度浮点型 32位 **

     var floatNum:Float=1.1f
    var minFloat=Float.MIN_VALUE//1.4E-45
    var maxFloat=Float.MAX_VALUE//3.4028235E38

Double 双精度浮点型 64位

    var doubleNum:Double=1.1
    var minDouble=Double.MIN_VALUE//4.9E-324
    var maxDouble=Double.MAX_VALUE//1.7976931348623157E308

数字字面值中的下划线

主要是对于比较长的数据进行分割,更易读,也是个不错的特性
比如我们把一个银行卡号每5个数进行分割,这样看起来就方便一些,打印的结果就是去掉下划线后的值,很实用

    var longNum=62284_82398_43130_0579
    println(longNum)//6228482398431300579

装箱和拆箱

在kotlin中,万物皆对象,因此和java不同的是在kotlin中不存在基本类型和引用类型的概念。

类型转换
数字类型之间相互可以转换,但可能存在精度丢失问题,kotlin中的类型转换跟java有些不一样,kotlin是不支持隐式转换的,比如将一个Int类型的值赋值给Long类型,这在java中是允许的,但是在Kotlin中是不行的,必须显示的进行转换。

转换方法

toByte(): //转换成Byte类型
toShort(): //转换成Short类型
toInt(): // 转换成Int类型
toLong(): // 转换成Long类型
toFloat(): // 转换成Float类型
toDouble(): // 转换成Double类型
toChar(): // 转换成Char类型

示例代码:


    var num=1.11111213213213213124321
    var numToByte=num.toByte()
    var numToShort=num.toShort()
    var numToLong=num.toLong()
    var numToFloat=num.toFloat()
    var numToDouble=num.toDouble()

    println(numToByte)//1
    println(numToShort)//1
    println(numToLong)//1
    println(numToFloat)//1.1111121
    println(numToDouble)//1.1111121321321322


布尔

Boolean 只有2个值 true和false 通常用作与逻辑判断

    var trueV:Boolean=true
    var flaseV:Boolean=false

逻辑运算符
跟java中以一样,与,或非

    var a = true
    var b = false
    /*或*/
    if (a || b) {
        println(true)
    } else {
        println(false)
    }

    /*与*/
    if (a && b) {
        println(true)
    } else {
        println(false)
    }

    /*非*/
    println(!a)
    println(!b)



字符

kotlin的Char其实是一个16位的Unicode字符,占两个字节,用单引号‘ ’括起来,可以是汉字,符号,数字等等

    var charA = '1'
    var charB = '喻'
    var charC = 'y'

字符串

String 用双引号“”括起来的值

    var name:String="yzq"

字符串模板
在kotlin中有个非常好用的特性就是字符串模板,原生字符串模板用三个双引号括起来表示,
例:

fun main(args: Array<String>) {
    var content = """
        窗前明月光
        疑是地上霜
        举头望明月
        低头思故乡
        """
    println(content)
}

这里写图片描述

如果用java来打印上面这首诗,你可以试试有多麻烦。

kotlin中字符串模板还可以嵌套表达式,表达式用 $ 开头
用过java的人都知道,如果需要拼接大量的字符串的话,写起来简直是太恶心了。
例如:

java代码;

public class Main {
    public static void main(String[] args) {
        int a = 1;
        int b = 2;
        int c = 3;
        System.out.println(a + "+" + b + "+" + c + "+" + (a + b + c));
    }
}

上面的运算并不复杂,但是拼接起来也是够恶心的了
我们来看看kotlin中用字符串模板来写有多爽

kotlin:

fun main(args: Array<String>) {

    val a = 1
    val b = 2
    val c = 3
    println("$a+$b+$c=${a + b + c}")
}

是不是明显觉得好了很多,不用去拼接那么多加号了。


区间(Range)

在java中是没有区间的,区间是一个数学上的概念,叫做范围,比如,1到100这个范围就叫做区间。

区间的写法:

    /*定义一个1到100的区间  [1,100]  ..符号其实就是rangeTo函数*/
    val range1:IntRange=1..100

常用区间就是IntRange了,kotlin中还有CharRange、LongRange

区间常用的方法
1)isEmpty()//判断区间是否为空
2)contains()或in //判断区间是否包含某个值
3) for()//迭代区间

    /*判断区间是否为空*/
    println(range2.isEmpty())

    /*判断区间是否包含某个值*/
    println(range1.contains(10))
    println(1 in  range1)

    /*迭代区间*/
    for (i in range1) {
        print("${i},")

    }





    var chengji=66;
    if (chengji in 1..60){
        println("不及格")
    }else if (chengji in 60..80){
        println("良好")
    }else if (chengji in 80..100){
        println("优秀")
    }

    /*相当于java中的    
    if (chengji>0&&chengji<60){
        println("不及格")
    } 
    */
 


数组

创建数组的几种方式

1.arrayOf()

    /*通过arrayof()函数创建数组,数组里面可以放任何类型的数据*/
    var arrA = arrayOf(1, 2, "3", true)

2.arrayOfNulls()

    /*创建一个空数组并指定其数据类型和长度*/
    var arrB = arrayOfNulls<String>(3)
    /*赋值*/
    arrB[0] = "1"
    arrB[1] = "2"
    arrB[2] = "3"

3.Array(size,fun)

    /*通过构造函数 指定size和一个表达式=  index为下标  从0开始一直到size-1  */
    var arrC = Array(3, { index -> index })  //[0,1,2]

4.原始类型数组函数

Kotlin 也有无装箱开销的专门的类来表示原生类型数组,并提供了相应的函数用于构建这些数组

    /*创建一个ByteArray*/
    var byteArr = byteArrayOf(1, 2, 3, 4, 5)
    /*创建一个ShortArray*/
    var shortArr = shortArrayOf(1, 2, 3, 4, 5)
    /*创建一个IntArray*/
    var intArr = intArrayOf(1, 2, 3, 4, 5)
    /*创建一个LongArray*/
    var longArr = longArrayOf(1L, 2L, 3L)
    /*创建一个FloatArray*/
    var floatArr = floatArrayOf(1.0f, 2.0f, 3.0f)
    /*创建一个DoubleArray*/
    var doubleArr = doubleArrayOf(1.0, 2.0, 3.0)
    /*创建一个CharArray*/
    var charArr = charArrayOf('1', '2', '3')


如果文中有什么纰漏或错误的话,请留言指正,我会及时修改。如果你觉得本文还不错的话,记得点个赞呦,或者关注我的专栏,希望能帮到你,谢谢。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喻志强(Xeon)

码字不易,鼓励随意。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值