一.整数类型(Byte、Short、Int、Long)
Scala的整数类型就是用于存放整数值的,比如12,30,3456等等。
1.整形分类
数据类型 | 描述 |
---|---|
Byte [1] | 8位有符号补码整数。数值区间为 -128 到 127 |
Short [2] | 16位有符号补码整数。数值区间为 -32768 到 32767 |
Int [4] | 32位有符号补码整数。数值区间为 -2147483648 到 2147483647 |
Long [8] | 64位有符号补码整数。数值区间为 -9223372036854775808 到 9223372036854775807 = 2的(64-1)次方-1 |
2.案例
Scala各整数类型有固定的表数范围和字段长度,不受具体操作的影响,以保证Scala程序的可移植性。
// 正确
var n1:Byte = 127
var n2:Byte = -128
// 错误
// var n3:Byte = 128
// var n4:Byte = -129
Scala的整型,默认为Int型,声明Long型,须后加‘l’或‘L’
var n5 = 10
println(n5)
var n6 = 9223372036854775807L
println(n6)
Scala程序中变量常声明为Int型,除非不足以表示大数,才使用Long
二.浮点类型(Float、Double)
Scala的浮点类型可以表示一个小数,比如123.4f,7.8,0.12等等。
1.浮点型分类
数据类型 | 描述 |
---|---|
Float [4] | 32 位, IEEE 754标准的单精度浮点数 |
Double [8] | 位 IEEE 754标准的双精度浮点数 |
2.案例
Scala的浮点型常量默认为Double型,声明Float型常量,须后加‘f’或‘F’。
// 建议,在开发中需要高精度小数时,请选择Double
var n7 = 2.2345678912f
var n8 = 2.2345678912
println("n7=" + n7) // n7=2.2345679
println("n8=" + n8) // n8=2.2345678912
三.字符类型(Char)
1.基本说明
字符类型可以表示单个字符,字符类型是Char,16位无符号Unicode字符(2个字节),区间值为U+0000到U+FFFF。
2.案例
(1)字符常量是用单引号 ‘ ‘ 括起来的单个字符。
(2)可以直接给Char赋一个整数,然后输出时,会按照对应的unicode字符输出
//(1)字符常量是用单引号 ' ' 括起来的单个字符。
var c1: Char = 'a'
println("c1=" + c1)
//(2)可以直接给Char赋一个整数,然后输出时,会按照对应的unicode字符输出
println("c1码值=" + c1.toInt)
(3)Char类型是可以进行运算的,相当于一个整数,因为它都对应有Unicode码。
var c2: Char = 98 // 正确,因为直接将一个数值给char,编译器只判断是否越界
var c3: Char = 'a' + 1 // 错误,Int高->char低,编译器判断类型
var c4: Char = ('a' + 1).toChar
(4)\t :一个制表位,实现对齐的功能
println("姓名\t年龄")
(5)\n :换行符
println("西门庆\n潘金莲")
(6)\ :表示\
println("c:\\电影\\avi")
(7)\” :表示”
println("同学们都说:\"大海哥最帅\"")
四.布尔类型:Boolean
1.基本说明
(1)布尔类型也叫Boolean类型,Booolean类型数据只允许取值true和false
(2)boolean类型占1个字节。
2.案例
var isResult : Boolean = false
var isResult2 : Boolean = true
五.Unit类型、Null类型和Nothing类型
1.概念
数据类型 | 描述 |
---|---|
Unit | 表示无值,和其他语言中void等同。用作不返回任何结果的方法的结果类型。Unit只有一个实例值,写成()。 |
Null | null , Null 类型只有一个实例值null |
Nothing | Nothing类型在Scala的类层级的最低端;它是任何其他类型的子类型。当一个函数,我们确定没有正常的返回值,可以用Nothing来指定返回类型,这样有一个好处,就是我们可以把返回的值(异常)赋给其它的函数或者变量(兼容性) |
2.案例
Null类只有一个实例对象,Null类似于Java中的null引用。Null可以赋值给任意引用类型(AnyRef),但是不能赋值给值类型(AnyVal)
object TestDataType {
def main(args: Array[String]): Unit = {
//null可以赋值给任意引用类型(AnyRef),但是不能赋值给值类型(AnyVal)
var n1: Int = null // 错误
println("n1:" + n1)
var cat = new Cat();
cat = null // 正确
}
}
class Cat {
}
Unit类型用来标识过程,也就是没有明确返回值的函数。
由此可见,Unit类似于Java里的void。Unit只有一个实例——( ),这个实例也没有实质意义
object TestSpecialType {
def main(args: Array[String]): Unit = {
def sayOk : Unit = {// unit表示没有返回值,即void
println("say ok")
}
sayOk
}
}
Nothing,可以作为没有正常返回值的方法的返回类型,非常直观的告诉你这个方法不会正常返回,而且由于Nothing是其他任意类型的子类,他还能跟要求返回值的方法兼容。
object TestSpecialType {
def main(args: Array[String]): Unit = {
def test() : Nothing={
throw new Exception()
}
test
}
}