Scala深入学习之数据类型学习 女爷i 2022-11-27 09:00 194阅读 0赞 ### 目录 ### * * 一、Scala类型层级关系 * 二、整数类型 * 三、浮点类型 * 四、字符类型 * 五、字符串类型 * 六、其他数据类型 * 七、类型转换 ## 一、Scala类型层级关系 ## Scala中数据类型的层级关系图为: ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTM2NjQ5OQ_size_16_color_FFFFFF_t_70_pic_center] Scala和Java一样,有8种数值类型 Byte、Char、Short、Int、Long、Float、Double和一个Boolean类型。Scala 数值类型的取值范围和 Java 对应类型的取值范围相同。和Java不同的是Scala没有基本类型和包装类型之分,这些类型都是类,有自己的属性和方法。 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTM2NjQ5OQ_size_16_color_FFFFFF_t_70_pic_center 1] * Unit是值类型,他只有一个实例对象()。 Nothing是所有类型的子类,他没有一个具体的实例对象,一个常见的应用如:抛出异常 程序exit、无限循环等。 * Nothing是所有类型的子类,也是Null的子类。Nothing没有对象,但是可以用来定义类型。例如,如果一个方法抛出异常,则异常的返回值类型就是Nothing。 * Null是所有引用类型的子类,它只有一个实例对象null,主要用来和其他的jvm语言进行互操作。 ## 二、整数类型 ## Scala中的整数类型有Byte、Long、Short、Int // 定义一个Byte类型 scala> val a:Byte = 8 a: Byte = 8 // 定义一个Short类型 scala> val b:Short = 10 b: Short = 10 // 在定义整型变量时,如果不定义Int类型,则默认定义为Int类型 scala> val c = 12 c: Int = 12 // 定义一个Int类型 scala> val c1:Int = 12 c1: Int = 12 // 定义Long类型的两种方式 scala> val d:Long = 8888 d: Long = 8888 scala> val d1 = 8888L d1: Long = 8888 ## 三、浮点类型 ## 浮点类型包括float类型和double类型。 浮点值是由十进制、可选的小数点、可选的e或者E以及指数部分组成。 浮点类型的数值以F或者f结束,否则就是Double类型,Double类型的数值也可以以D或者d结尾,是可选的。 浮点型常量有两种表示形式: * 十进制数形式:5.12,512.0f * 科学计数法形式:如5.12e2 = 5.12乘以10的2次方 // 定义浮点类型,默认是Double类型 scala> val f = 3.1415 f: Double = 3.1415 // 在小数点后加上F,定义为Float类型 scala> val f = 3.14F f: Float = 3.14 scala> val f1 = 3.14e2 f1: Double = 314.0 scala> val f1 = 3.14e2f f1: Float = 314.0 // 在小数点后加上D,定义为Double类型 scala> val d1 = 3.1415D d1: Double = 3.1415 scala> val d1 = 3.14e10 d1: Double = 3.14E10 ## 四、字符类型 ## 定义字符类型通常使用单引号字符赋值;也可以指定类型后,使用范围内的数字赋值 scala> val c = 'A' c: Char = A scala> val c1:Char = 'B' c1: Char = B scala> val c2:Char = 100 c2: Char = d scala> val c3 = '\n' c3: Char = 也可以使用转义字符: ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTM2NjQ5OQ_size_16_color_FFFFFF_t_70_pic_center 2] ## 五、字符串类型 ## String类型是有双引号包含的一个或者多个字符组成,语法和字符类型基本一致 scala> val a = "hello world" a: String = hello world ## 六、其他数据类型 ## Unit为空类型行,相当于void,使用()进行初始化 scala> val u =() u: Unit = () Boolean类型,只能为true,false scala> val b1 = false b1: Boolean = false scala> val b2:Boolean = true b2: Boolean = true Any可以接收任意的基本类型和引用类型 scala> val any:Any = 123 any: Any = 123 scala> val any:Any = null any: Any = null AnyRef可以接收任意的引用类型 scala> val any:AnyRef = 123 <console>:11: error: the result type of an implicit conversion must be more specific than AnyRef val any:AnyRef = 123 ^ scala> val any:AnyRef = "dsd" any: AnyRef = dsd AnyVal可以接收任意的基本类型 scala> val any:AnyVal = "df" <console>:11: error: the result type of an implicit conversion must be more specific than AnyVal val any:AnyVal = "df" ^ scala> val any:AnyVal = 123 any: AnyVal = 123 Null:null值只能被推断为Null类型,null代表为空值,可以被赋值给任何AnyRef类型的常量或变量 scala> val n = null n: Null = null scala> val any:AnyRef = null any: AnyRef = null Option类型用来表示一个值是可选的(有值或无值) scala> val m = Map("key1"->"value") m: scala.collection.immutable.Map[String,String] = Map(key1 -> value) scala> m.get("key1") res24: Option[String] = Some(value) scala> m.get("key2") res25: Option[String] = None ## 七、类型转换 ## **自动类型转换** ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTM2NjQ5OQ_size_16_color_FFFFFF_t_70_pic_center 3] scala> val x:Long = 123456 x: Long = 123456 scala> val y:Float = x y: Float = 123456.0 **强制类型转换** scala> val a = 9.9 a: Double = 9.9 //这样转换不成功 scala> val b:Int = a <console>:12: error: type mismatch; found : Double required: Int val b:Int = a ^ scala> val b:Int = a.toInt b: Int = 9 **数值类型和字符串类型的转换** 数值类型转字符串类型: 只需要在后面加上"" scala> val s1 = 1234+"" s1: String = 1234 scala> val s2 = true + "" s2: String = true scala> val s3 = 3.14 + "" s3: String = 3.14 字符串类型转数值类型: scala> val s4 = "3.1415" s4: String = 3.1415 scala> val res = s4.toInt java.lang.NumberFormatException: For input string: "3.1415" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:580) at java.lang.Integer.parseInt(Integer.java:615) at scala.collection.immutable.StringLike.toInt(StringLike.scala:304) at scala.collection.immutable.StringLike.toInt$(StringLike.scala:304) at scala.collection.immutable.StringOps.toInt(StringOps.scala:33) ... 28 elided scala> val res = s4.toDouble res: Double = 3.1415 scala> res.toInt res26: Int = 3 scala> val s5 = "1234" s5: String = 1234 scala> val res = s5.toInt res: Int = 1234 -------------------- 以上内容仅供参考学习,如有侵权请联系我删除! 如果这篇文章对您有帮助,左下角的大拇指就是对博主最大的鼓励。 您的鼓励就是博主最大的动力! [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTM2NjQ5OQ_size_16_color_FFFFFF_t_70_pic_center]: /images/20221124/fae483773332413fa89cc600bf2c6b87.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTM2NjQ5OQ_size_16_color_FFFFFF_t_70_pic_center 1]: /images/20221124/ca8893a298584fb3931803a2784c9a3d.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTM2NjQ5OQ_size_16_color_FFFFFF_t_70_pic_center 2]: /images/20221124/bc9bb937884c455f8a5648d20886b54f.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NTM2NjQ5OQ_size_16_color_FFFFFF_t_70_pic_center 3]: /images/20221124/51b16fc594024aadac78d4f182706930.png
相关 Scala深入学习之类型参数与隐式转换学习 目录 一、类型参数 二、隐式转换 一、类型参数 泛型类代码: package generic / @aut 川长思鸟来/ 2022年12月22日 15:23/ 0 赞/ 143 阅读
相关 Scala深入学习之面向对象学习 目录 一、封装 二、类的构造 三、内部类 四、Object对象 五、伴生对象 六、类的继 梦里梦外;/ 2022年12月08日 05:18/ 0 赞/ 223 阅读
相关 Scala深入学习之数组学习 目录 一、定长数组Array 二、可变数组ArrayBuffer 三、变长数组通用操作 四、Map学习 迷南。/ 2022年12月04日 08:41/ 0 赞/ 179 阅读
相关 Scala深入学习之集合体系学习(一) 1.集合是一种用来存储各种对象和数据的容器。 2.Scala集合分为可变和不可变的集合,不可变集合可以安全的并发访问。 可变集合可以在适当的地方被更新或扩展。这意味 今天药忘吃喽~/ 2022年12月01日 11:52/ 0 赞/ 218 阅读
相关 Scala深入学习之函数学习 目录 一、函数的定义 二、匿名函数 三、递归函数 四、无参函数 五、方法和函数的区别联系 一、函数 快来打我*/ 2022年11月30日 04:26/ 0 赞/ 219 阅读
相关 Scala深入学习之方法的学习 目录 一、方法定义 二、无参方法 三、默认参数方法 四、可变参数方法 五、方法定义的注意事项 一、 电玩女神/ 2022年11月29日 05:49/ 0 赞/ 461 阅读
相关 Scala深入学习之操作符学习 一、算术操作符 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG 小灰灰/ 2022年11月28日 10:56/ 0 赞/ 251 阅读
相关 Scala深入学习之数据类型学习 目录 一、Scala类型层级关系 二、整数类型 三、浮点类型 四、字符类型 五、字符串类型 女爷i/ 2022年11月27日 09:00/ 0 赞/ 195 阅读
相关 Scala深入学习之变量学习 目录 一、变量定义 二、var和val的区别 三、变量总结 一、变量定义 基本语法: var|val 变量名 [ 你的名字/ 2022年11月27日 08:48/ 0 赞/ 170 阅读
还没有评论,来说两句吧...