scala教程:值类型

说明

值类型,相当于 java中的 基本数据类型 的包装类

整型

  • Byte: 8位有符号补码整数。数值区间为 -128 到 127

  • Short: 16位有符号补码整数。数值区间为 -32768 到 32767

  • Int: (常用)32位有符号补码整数。数值区间为 -2147483648 到 2147483647

  • Long: (常用)64位有符号补码整数。数值区间为 -9223372036854775808 到 9223372036854775807

字面值:默认为 Int 型,声明 Long 型字面量后面加 L 或 l

val a=1 //不写数据类型,自动推断为 Int型
println(a.getClass.getSimpleName)
val b=1L //不写数据类型,自动推断为 Long型
println(b.getClass.getSimpleName)

错误写法:

// 13245344352345 值太大,超过int范围,会报错。解决:在 13245344352345 后面加L
var a : Long = 13245344352345L

// 200 超过 byte的范围,会报错,不超过不会报错
var b : Byte = 200

正确写法:

var a : Long = 13245344352345L
var b : Byte = 120

运算:

// b是byte类型,1是int类型,byte类型和int类型做运算,由于int类型范围大,所以结果也是 int类型
// 与java相同,小范围 与 大范围计算,其结果也是 大范围
//var res:Byte =b + 1
var res:Byte = (b + 1).toByte // 转换成 Byte类型

浮点型

  • Float 32 位, 单精度浮点数,范围小

  • Double 64 位, 双精度浮点数。常用,更精确(小数点后大致7位)(默认)

如下:

var pi:Double = 3.14 // 正确
var pi:Float = 3.14 // 错误,字面值 3.14 是Double类型,不能赋给范围小的 Float类型

固定的范围

与java相同,scala 整数类型、浮点类型,有固定的范围,不受具体 操作系统 的影响

不像 C 语言,在32位、64位平台中,范围不同,不利于移植

字面值:默认为 double 型,声明 float 型字面量后面加 F 或 f

//val a : Float = 1.1//报错
val d = 1.1
val b : Float = 1.1f
val c : Double = 1.1

字符类型

Char 16位无符号Unicode字符, 可以存汉字

val a:Char='语'

转成 Int 类型:

println( a.toInt)

可以进行运算的,相当于一个整数,因为对应Unicode码

val a:Char='a'
println(a+1)

布尔类型

Boolean 占1个字节,只有2个值:true 或 false

例子

val b:Boolean = true

val b2 = false

println(b)
println(b2)
println(b.getClass.getSimpleName)

执行结果:

true
false
boolean

值类型也是对象类型

val a:Int=1
println(a.getClass.getSimpleName)

java中有 int基本数据类型,scala则没有,scala中的 Int 相当于 java中的 Integer

类型转换

隐式转换

小转大

var l : Long = 132453454325324L // 1 Int 型,可自动转换 Long
var i : Int = 1
var s : Short = 400


i = s // 小转大,相当于 把小碗中的水,倒入到大碗中
l = i

大转小

var l : Long = 132453454325324L // 1 Int 型,可自动转换 Long
var i : Int = 1
var s : Short = 400
//    var bt : Byte = 200// 超过 byte的范围,会报错;不超过不会报错

s = l.toShort //大转小,相当于 把大碗中的水,倒入到小碗中,默认会报错,放不下。转换写法:toXXX
//    s = (Short) l 与java不同,不支持强转

原文出处:/show_1IX19YrOTf81.html