ToB企服应用市场:ToB评测及商务社交产业平台

标题: Kotlin系列一(快速入门,kotlin的数据类型) [打印本页]

作者: 宝塔山    时间: 2024-3-25 16:51
标题: Kotlin系列一(快速入门,kotlin的数据类型)
一.快速入门

KontlinScript脚本


Kotlin程序


二.变量和常量

  1. //定义变量variable,Int类型的变量a
  2. var a:Int = 10;
  3. //定义常量value,Int类型的常量b
  4. val b:Int = 20;
复制代码
三.Kontlin中的数据类型

整型

  1.         println("kotlin中的整形");
  2.         //8bit的整形
  3.         var a:Byte = 10;
  4.         println("a=$a,8bit整形的最大值${Byte.MAX_VALUE},最小值${Byte.MIN_VALUE}");
  5.         //16bit的整形
  6.         var b:Short = 10;
  7.         println("b=$b,16bit整形的最大值${Short.MAX_VALUE},最小值${Short.MIN_VALUE}");
  8.         //32bit的整形
  9.         var c:Int = 10;
  10.         println("c=$c,32bit整形的最大值${Int.MAX_VALUE},最小值${Int.MIN_VALUE}");
  11.         //64bit的整形,注意定义Long类型时,数值后缀必须是大写的L,不能是小写的l,也不能没有
  12.         var d:Long = 10L;
  13.         println("d=$d,64bit整形的最大值${Long.MAX_VALUE},最小值${Long.MIN_VALUE}");
  14.         //无符号整型,后缀为U
  15.         var e:UInt = 100U;
  16.         println("无符号整型e=$e,最大值${UInt.MAX_VALUE},最小值${UInt.MIN_VALUE}");
  17.         //无符号长整型,后缀为UL
  18.         var f:ULong = 100UL;
  19.         println("无符号长整型h=$f,最大值${ULong.MAX_VALUE},最小值${ULong.MIN_VALUE}");
  20.         //带分割符的数字型
  21.         var g:Int = 100_908_990;
  22.         println("带分割符的数字型$g");
  23.         //二进制数值,前缀为0b
  24.         var h:Int = 0b10101010;
  25.         println("二进制数值$h");
  26.         //十六进制数值,前缀为0x
  27.         var i:Int = 0x10101010;
  28.         println("十六进制数值$i");
复制代码
浮点型

  1. println("kotlin中的浮点型");
  2. //Float单精度浮点型,后缀为f或F
  3. var f1:Float = 1.1f;
  4. var f2:Float = 1.1F;
  5. println("单精度浮点型,f1=$f1,f2=$f2,最大值${Float.MAX_VALUE},最小值${Float.MIN_VALUE}");
  6. //Double双精度浮点型,默认没有后缀的浮点数都是双精度浮点型
  7. var d1:Double = 1.12;
  8. var d2:Double = 1.1;
  9. println("双精度浮点型,d1=$d1,d2=$d2,最大值${Double.MAX_VALUE},最小值${Double.MIN_VALUE}");
  10. //科学计数法,后缀使用e或E,数据类型为Double
  11. //112.0
  12. var e1:Double = 1.12e2;
  13. //113.0
  14. var e2:Double = 1.13E2;
  15. println("科学计数法,e1=$e1,e2=$e2");
复制代码
字符和字符串

  1.         println("kotlin中的字符型");
  2.         //1.单引号括起来的单个字符,使用Char类型
  3.         var a:Char = 'a';
  4.         println("字符型a=$a,a的ASCII码值${a.toInt()}");
  5.         //2.使用双引号号括起来的字符串,使用String类型
  6.         var b:String = "abc";
  7.         println("字符串型b=$b");
  8.         //3.模板字符串,可以在字符串中使用变量,完整写法是${变量名或表达式},如何大括号中的是变量则可以写成$变量名
  9.         //注意在模板字符串中无法直接输出 $ 字符,需要使用${'$'}进行转义
  10.         var c:String = "abc${b}";
  11.         println("模板字符串,完整写法c=${c},简写c=$c,\n在模板字符串中使用${'$'}字符");
  12.         //4.使用三个双引号括起来的字符串,格式化的字符串,可以保持原有格式
  13.         var d:String = """
  14.             第一行
  15.             第二行
  16.             第三行
  17.             ${b}
  18.         """;
  19.         println("格式化的字符串型d=$d");
  20.         //5.字符串的拼接
  21.         var e:String = "abc" + "def";
  22.         //注意,在kotlin中 + 的左边是字符串,则 + 视为字符串拼接;如果 + 左边是数字,则视为加法运行
  23.         //合法的字符串拼接
  24.         var f:String = "abc" + 123;
  25.         //非法的字符串拼接
  26. //        var g:String = 123 + "abc";
  27.         println("字符串的拼接e=$e");
  28.         //6.遍历字符串
  29.         var count = 0;
  30.         for(c:Char in b){
  31.             println("遍历字符串$b,第${++count}个字符=$c")
  32.         }
  33.         //7.根据索引获取字符串中的字符
  34.         var index = 1;
  35.         var h:Char = b[index];
  36.         println("字符串b中索引${index}的字符h=$h");
  37.         //8.字符串的截取
  38.         var i:String = "截取字符串";
  39.         println("截取字符串i=$i,一个参数表示从指定索引截取到最后=${i.substring(2)},两个参数表示从指定索引截取到指定索引=${i.substring(2,4)}");
  40.         //9.字符串的替换
  41.         var j:String = "我在学Java";
  42.         println("字符串j=$j,字符串的替换=${j.replace("Java","Kotlin")}");
  43.         //10.字符串不可变,使用StringBuilder或StringBuffer拼接字符串,StringBuilder是线程不安全的,StringBuffer是线程安全的
  44.         //常规写法
  45.         var k:String = StringBuilder().append("我").append("在").append("学").append("Java").toString();
  46.         //Lambda表达式写法,函数式编程
  47.         var l:String = buildString {
  48.             append("我");
  49.             append("在");
  50.             append("学");
  51.             append("Kotlin");
  52.             toString();
  53.         };
  54.         println("字符串k=$k,字符串l=$l");
复制代码
布尔类型

  1. println("kotlin中的布尔类型");
  2. var a:Boolean = true;
  3. var b:Boolean = false;
  4. //不支持下面两种写法,也不支持对象存在时表示true和对象不存在时表示false,Boolean只有两种值,true和false
  5. //var c:Boolean = 1;
  6. //var d:Boolean = 0;
  7. println("布尔值a=$a,布尔值b=$b");
复制代码
"可空类型"和"不可空类型"

  1.         println("Kotlin中的空类型");
  2.         //1.不可空类型,默认定义变量是不可空类型的变量
  3.         //1.1不可空类型不能为null,否则编译报错
  4.         var a:String = "不可空类型";
  5.         //2.可空类型,定义变量时在数据类型后面加 ? 字符表示可空类型
  6.         //2.1可空类型可以赋值为null
  7.         //2.2可控类型变量只能赋值给可空类型变量
  8.         var b:String? = null;
  9.         println("不可空类型a=$a,可空类型b=$b");
  10.         //3.安全操作符,在kotlin中使用可空类型时,必须使用安全操作符 ? ,使用变量时在变量后加上 ? 字符
  11.         //3.1安全操作符 ? 表示如果变量不为null,则执行 ? 后面的操作,如果变量为null,则不执行 ? 后面的操作
  12.         //可空类型变量操作的返回值也是可空类型,此时的变量 len 也是可空类型
  13.         var len = b?.length;
  14.         println("可空类型b的长度=$len");
  15.         //4.强制调用操作符,在kotlin中希望强制调用一个可空类型的变量,可以使用 !! 操作符
  16.         //4.1 !! 操作符表示如果变量不为null,则执行 !! 后面的操作,如果变量为null,则抛出NullPointerException空指针异常
  17.         //4.使用强制调用操作符 !! 返回的是不可空的类型
  18.         try{
  19.         var len2 = b!!.length;
  20.         println("可空类型b的长度=$len2");
  21.         }catch (e:NullPointerException){
  22.             println("空指针异常");
  23.             e.printStackTrace();
  24.         }
复制代码
内置类型结构

Any类型

  1. public open class Any {
  2.     public open operator fun equals(other: Any?): Boolean
  3.     public open fun hashCode(): Int
  4.     public open fun toString(): String
  5. }
复制代码
Nothing类型

  1. public class Nothing private constructor()
复制代码
Unit类型

  1. public object Unit {
  2.     override fun toString() = "kotlin.Unit"
  3. }
复制代码
类型转换和类型判断

数值类型转换

方法定义方法作用toByte():Byte将数值转换为Byte类型toShort():Short将数值转换为Short类型toInt():Int将数值转换为Int类型toLong()ong将数值转换为Long类型toUByte():UByte将数值转换为UByte类型toUShort():UShort将数值转换为UShort类型toUInt():UInt将数值转换为UInt类型toULong():ULong将数值转换为ULong类型toFolat():Float将数值转换为Float类型toDouble()ouble将数值转换为Double类型toBigInteger():BigInteger将数值转换为BigInteger类型toBigDecimal():BigDecimal将数值转换为BigDecimal类型toString(radix:Int):String将数值转换为指定进制的字符串,没有传参默认为十进制
  1. //1.数值类型间的转换
  2.         var number = 123;
  3.         println("""
  4.             toByte()=${number.toByte()}
  5.             toShort()=${number.toShort()}
  6.             toInt()=${number.toInt()}
  7.             toLong()=${number.toLong()}
  8.             toUByte()=${number.toUByte()}
  9.             toUShort()=${number.toUShort()}
  10.             toUInt()=${number.toUInt()}
  11.             toULong()=${number.toULong()}
  12.             toFloat()=${number.toFloat()}
  13.             toDouble()=${number.toDouble()}
  14.             toBigDecimal()=${number.toBigDecimal()}
  15.             toBigInteger()=${number.toBigInteger()}
  16.             """.trimIndent());
复制代码
类型转换

自动类型转换(隐式类型转换)

  1. //2.自动类型转换,123可以自动转换为Short类型,但Short类型的变量a不能自动转换为Int类型
  2. var a:Short = 123;
  3. //var b:Int = a;
复制代码
强制类型转换(显示类型转换)

  1. //3.强制类型转换,使用 as 关键字将变量a转换为Number类型
  2. var b:Number = a as Number;
  3. println("a=$a-${a.javaClass},b=$b-${b.javaClass}");
复制代码
安全类型转换

  1. //4.安全类型转换,在数据类型的后面使用 as? 安全操作符
  2. var c:String = "进行安全类型转换";
  3. var d:Int? = c as? Int;
  4. println("c=$c-${c.javaClass},d=$d-${d?.javaClass}");
复制代码
类型提升

  1. //5.类型提升,两个数值类型进行运算时,数值范围小的会自动提升为数值范围大的类型
  2. var number1:Byte = 123;
  3. var number2:Double = 19.22;
  4. var result = number1 + number2;
  5. println("result=$result-数据类型${result.javaClass}");
复制代码
类型判断

  1. //6.类型判断
  2. val num = 100;
  3. if(num is Number){
  4. println("$num 是Number类型");
  5. }
复制代码
智能转换

  1. fun temp1(param:Any):Unit{
  2.         if (param is String){
  3.             //这里如果是String类型,会自动将param转换为String类型
  4.             println("在if代码块中,param参数的数据类型=${param.javaClass},调用String类的方法=${param.toUpperCase()}");
  5.         }
  6.     }
复制代码
类型别名

  1. //7.给数据类型起别名使用typealias关键字,需要在全局作用域使用该关键字,起别名后原先的名字也可以使用
  2. //typealias 数据类型别名 =  数据类型;
  3. typealias  MyInt = Int;
  4. //使用Int类型的别名
  5. val n:MyInt = 12;
  6. println("使用别名定义的变量n=$n 是${n.javaClass}类型");
复制代码



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4