什么是变量和数据类型
为了方便新手阅读,在这里我们简单介绍下变量和基本数据类型的概念,老司机跳过即可。
首先我们先来搞清楚一件事就是我们编写的程序实际上都是在处理数据。不管是视频,图片,还是文字,数字等,都是数据,只不过呈现出来的方式不同。
那我们怎么才能操作这些数据呢?
这个时候,我们就需要变量了。
变量可以理解为存储数据的容器,用来描述数据,比如在程序中,一个人的名字可以用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')
如果文中有什么纰漏或错误的话,请留言指正,我会及时修改。如果你觉得本文还不错的话,记得点个赞呦,或者关注我的专栏,希望能帮到你,谢谢。