scala(4)-scala的数据类型、类型转换、键盘输入

sscala(4)-scala的数据类型、类型转换、键盘输入

数据类型与操作符

scala中的类型以及操作符绝大多数和Java一样,我们主要来学习

  • 与Java不一样的一些用法

  • scala类型的继承体系

数据类型

基础类型类型说明
Byte8位带符号整数
Short16位带符号整数
Int32位带符号整数
Long64位带符号整数
Char16位无符号Unicode字符
StringChar类型的序列(字符串)
Float32位单精度浮点数
Double64位双精度浮点数
Booleantrue或false

注意下 scala类型与Java的区别:

  1. scala中所有的类型都使用大写字母开头
  2. 整形使用 Int 而不是Integer
  3. scala中定义变量可以不写类型,让scala编译器自动推断
  4. Scala中默认的整型是Int, 默认的浮点型是: Double

scala类型层次结构

image-20200919145415221

类型层次结构说明:

类型说明
Any所有类型的父类,,它有两个子类AnyRef与AnyVal
AnyVal所有数值类型的父类
AnyRef所有对象类型(引用类型)的父类
Unit表示空,Unit是AnyVal的子类,它只有一个的实例为(),它类似于Java中的void,但scala要比Java更加面向对象
NullNull是AnyRef的子类,也就是说它是所有引用类型的子类。它的实例是null 。可以将null赋值给任何对象类型
Nothing所有类型的子类不能直接创建该类型实例,某个方法抛出异常时,返回的就是Nothing类型,因为Nothing是所有类的子类,那么它可以赋值为任何类型。我们程序员不使用Nothing,这个是系统自行维护的。。

思考题
以下代码是否有问题?

val b:Int = null

Scala会解释报错: Null类型并不能转换为Int类型,说明Null类型并不是Int类型的子类

类型转换

概述

当Scala程序在进行运算或者赋值动作时, 范围小的数据类型值会自动转换为范围大的数据类型值, 然后再进行计算.例如: 1 + 1.1的运算结果就是一个Double类型的2.1. 而有些时候, 我们会涉及到一些类似于"四舍五入"的动作, 要把一个小数转换成整数再来计算. 这些内容就是Scala中的类型转换.

scala中的类型转换分为 值类型的类型转换 和 引用类型的类型转换 , 这里我们先重点介绍: 值类型的类型转换 .值类型的类型转换分为:

  • 自动类型转换

  • 强制类型转换

自动类型转换

解释:

范围小的数据类型值会自动转换为范围大的数据类型值, 这个动作就叫: 自动类型转换.

自动类型转换从小到大分别为:

Byte, Short, Char -> Int -> Long -> Float -> Double
  1. 示例代码
val a:Int = 3
//因为是int类型和double类型的值进行计算, 所以最终结果为: Double类型 
val b:Double = 3 + 2.21 
//这样写会报错, 因为最终计算结果是Int类型的数据, 将其赋值Byte类型肯定不行.
val c:Byte = a + 1 

强制类型转换

  1. 解释

范围大的数据类型值通过一定的格式(强制转换函数)可以将其转换成范围小的数据类型值, 这个动作就叫: 强制类型转换.

注意: 使用强制类型转换的时候可能会造成精度缺失问题!

  1. 语法
val/var 变量名:数据类型 = 具体的值.toXxx //Xxx表示你要转换到的数据类型

参考代码

val a:Double = 5.21
val b:Int = a.toInt

值类型和String类型之间的相互转换

值类型的数据转换成String类型

格式1:

val/var 变量名:String = 值类型数据 + ""

格式2:

val/var 变量名:String = 值类型数据.toString

示例
将Int, Double, Boolean类型的数据转换成其对应的字符串形式.

val a1:Int = 10
val b1:Double = 2.1
val c1:Boolean = true
//方式一: 通过和空字符串拼接的形式实现
val a2:String = a1 + ""
val b2:String = b1 + ""
val c2:String = c1 + ""
//方式二: 通过toString函数实现
val a3:String = a1.toString
val b3:String = b1.toString
val c3:String = c1.toString
String类型的数据转换成其对应的值类型

格式:

val/var 变量名:值类型 = 字符串值.toXxx //Xxx表示你要转换到的数据类型

注意:

  • String类型的数据转成Char类型的数据, 方式有点特殊, 并不是调用toChar, 而是toCharArray
  • 这点目前先了解即可, 后续我们详细解释

需求:

将字符串类型的整数, 浮点数, 布尔数据转成其对应的值类型数据.

val s1:String = "100"
val s2:String = "2.3"
val s3:String = "false"
//将字符串类型的数据转成其对应的: Int类型
val a:Int = s1.toInt
//将字符串类型的数据转成其对应的: Double类型
val b:Double = s2.toDouble
//将字符串类型的数据转成其对应的: Boolean类型
val c:Boolean = s3.toBoolean

键盘录入

概述

前边我们涉及到的数据, 都是我们写"死"的, 固定的数据, 这样做用户体验并不是特别好. 那如果这些数

据是由用户录入, 然后我们通过代码接收, 就非常好玩儿了. 这就是接下来我们要学习的Scala中的"键盘

录入"功能.

使用步骤

  1. 导包

格式: import scala.io.StdIn

  1. 通过StdIn.readXxx()来接收用户键盘录入的数据
  • 接收字符串数据: StdIn.readLine()

  • 接收整数数据: StdIn.readInt()

示例

  • 提示用户录入字符串, 并接收打印.
println("请录入一个字符串: ")
val str = StdIn.readLine()
println("您录入的字符串内容为: " + str)
  • 提示用户录入整数, 并接收打印.
println("请录入一个整数: ")
val num = StdIn.readInt()
println("您录入的数字为: " + num)
println("请录入一个字符串: ")
val str = StdIn.readLine()
println("您录入的字符串内容为: " + str)
  • 提示用户录入整数, 并接收打印.
println("请录入一个整数: ")
val num = StdIn.readInt()
println("您录入的数字为: " + num)
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值