- 基本数据类型kotlin的基本数据类型跟Java等高级语言分类一样,包括
、整型、长整型、浮点型、双精度、布尔型、字符型、字符串这几种常见类型,不同于 Java 的是,字符不属于数值类型,是一个独立的数据类型。因为Kotlin 中没有基础数据类型,只有封装的数字类型。所以较小类型并不是较大类型的子类型,较小的类型不能隐式转换为较大的类型。kotlin与java的基本数据类型对比 Kotlin数据类型 Int LongFloatDoubleBooleanCharStringKotlin类型转换 toInt toLongtoFloat
toDouble-- toChar toString java数据类型 int和Integerlong和Longfloat和Floatdouble和Doubleboolean和Booleancharstring
和java一样我们可以声明一些常量、变量、静态等当写法有区别
java 格式 修饰词 数据类型 数据名int i1 = 0; //变量 final int i2 = 0; //常量 static int i3 = 0; // 静态kotlin 格式 修饰词 数据名 : 数据类型
var i1: Int = 0 //变量 val i2: Int = 0 //常量 companion object var i3: Int =0 //静态变量Kotlin 拥有空安全机制。 像String类型直接赋值为null会报异常,如果我们想赋值null就得在给数据类型加个标记"?",
如果为空时我们操作怎么办?放心如果为空它不会执行,你还可以用"?:"进行为空后的操作,
你还可以用"!!."进行断言,但这样得自己排雷如果为空你操作就会报错var str: String? = null var l: Int=0 l=str?.length?:-1 //str = "abcd" l=str!!.length //显而易见str为空它运行会报错 - 数组数组用类 Array 实现和其他数组Array,并且还有一个 size 属性及 get 和 set 方法,由于使用 [] 重载了 get 和 set 方法,所以我们可以通过下标很方便的获取或者设置数组对应位置的值。
* 与 Java 不同的是,Kotlin 中数组是不协变的(invariant)。数组用类Array的创建方式:一种是使用函数arrayOf(),另外一种是使用工厂函数val array: Array<String> = arrayOf("1","2","3") //array1数组的大小为2 值有["0","1"] // var array1: Array<String> = Array(2 ,{i -> i.toString}) val array1: Array<String> = Array(2){ i -> i.toString()} //元素操作 val length: Int = array.size; // var get: Int = int1_array.get(0); var str: String = array[0]; // array.set(0,1); array[0] = "233";数组除了类Array,还有IntArray, BooleanArray, CharArray等用来表示各个类型的数组,省去了装箱操作,因此效率更高,其用法同Array类似.
* 不存在StringArray,因为String是一种特殊的基本数据类型val ints: IntArray = intArrayOf(1,2,3) val booleans: BooleanArray = booleanArrayOf(true,false,true) val floats: FloatArray = floatArrayOf(1.0f,1.2f,1.5f) - 字符串字符串类型与基本变量类型之间的转换方式:
Java的实现方式比较烦琐,既需要其他类型的类名,又需要该类型的转换方法。而在Kotlin这边,转换类型相对简单,并且与基本数据类型之间的转式更友好,也更方便记忆。
字符串的常用方法:这方面kotlin基本兼容java的相关方法(indexOf,substring,split)字符串转换为其他数据类型的Kotlin与Java方式对比 字符串转换目标 Kotlin转换方式 java转换方式 字符串(str)转整型 str.toInt Integer.parseInt(str) 字符串(str)转长整型 str.toLong Long.parseLong(str) 字符串(str)转浮点数 str.toFloat Float.parseFloat(str) 字符串(str)转双精度 str.toDouble Double.parseDouble(str) 字符串(str)转布尔型 str.toBoolean Boolean.parseBoolean(str) 字符串(str)转数组 str.toCharArry str.toCharArry
*split方法在java中的返回值是String数组,而在kotlin中返回String队列(List<String>)val str:String = "123.abc.一二三" var upStr:String? = null if(str.indexOf(".")>0){ //upStr值为123 upStr = str.substring(0,str.indexOf(".")) } val list:List<String> = str.split(".") var upList:String = "" for (i in list){ //upList值为123|abc|一二三| upList =upList + i +"|" }字符串拼接:$变量名 ${变量运算} 如果字符串中我们需要一个美元符号怎么办 我们可以 ${'$'} \$
upList ="$upList i|" - 容器与java类似,kotlin也拥有三类基本的容器(集合、队列、映射),但kotlin对变量的操作修改比较谨慎,所以又分为只读容器(Set、List、Map)和可变容器(MutableSet、MutableList、MutableMap)
既然都是容器那么他们必定有相同的容器方法:
isEmpty:判断该容器是否为空
isNotEmpty:判断该容器是否非空
contains:判断该容器是否包含指定元素
clear:清空该容器
iterator:获取该容器的迭代器
count:获取该容器包含元素个数
size:获取该容器包含元素个数
遍历方法(for-in循环、迭代器遍历、*forEach遍历)
初始化格式:集合(Set/MutableSet):容器内部的元素不按顺序排列、存在唯一性,不能用下标访问添加相同元素时会覆盖
MutableSet的add方法添加元素,位置不确定(无序)
MutableSet没有修改元素方法
MutableSet的remove方法用于删除指定元素
队列(List/MutableList):容器内部的元素按顺序排列、能用下标([ ])访问
MutableList的get方法获取指定位置元素
MutableList的add方法添加元素到队列末尾,也可添加指定位置
MutableList的set方法替换或修改指定位置元素
MutableList的removeAt方法用于删除指定位置的元素
映射(Map/MutableMap):容器内部的元素是一组键值对(Key-Value)
MutableMap的put方法添加元素,映射会先根据键名寻找同名元素,如果找不到就添加新元素,如果找得到就用新元素添加旧元素
MutableMap的containsKey判断是否存在指定键名的元素
MutableMap的containsValue判断是否存在指定键值的元素
MutableMap的remove方法用于删除指定键名的元素
MutableMap添加元素的格式:键名 to 键值 或者 Pair(键名,键值)var sList : List<String> = listOf("123","13","14"); //for-in循环 1 var desc = ""; for (item in sList){ desc = "${desc}名称:${item}\n"; } //for-in循环 1 desc = ""; // sortBy表示升序排列,后面跟的是排序条件 sList.sortedBy { it.length } // sortByDescending表示降序排列,后面跟的是排序条件 sList.sortedByDescending { it.length } // indices是队列的下标数组。如果队列大小为10,下标数组的取值就为0~9 for (i in sList.indices){ desc = "${desc}名称:${sList[i]}\n"; } //迭代器遍历 var desc1 = ""; var iterator = sList.iterator(); //如果迭代器还存在下一个节点,就继续取出下一个节点的记录 while (iterator.hasNext()){ var next = iterator.next() desc1 = "${desc1}名称:${next}\n"; } //foreach遍历 var desc2 = ""; sList.forEach{ desc2 = "${desc2}名称:${it}\n"; } tv_hello.text = desc2; //to方式映射 var goodsMap : Map<String,String> = mapOf("苹果" to "iphone 11","小米" to "小米 9","魅族" to "魅族pro16s"); //Pair方式映射 var goodsMutMap : MutableMap<String,String> = mutableMapOf( Pair("苹果" , "iphone 11"), Pair("小米" , "小米 9"), Pair("魅族" , "魅族pro16s"));
Kotlin数据类型
基本数据类型kotlin的基本数据类型跟Java等高级语言分类一样,包括、整型、长整型、浮点型、双精度、布尔型、字符型、字符串这几种常见类型,不同于 Java 的是,字符不属于数值类型,是一个独立的数据类型。因为Kotlin 中没有基础数据类型,只有封装的数字类型。所以较小类型并不是较大类型的子类型,较小的类型不能隐式转换为较大的类型。kotlin与java的基本数据类型对比Kotli...
·
更多推荐

所有评论(0)