- scala一切数据都是对象,都是
Any
的子类; - Scala数据类型分为两类,数值类型
AnyVal
和引用类型AnyRef
; - Scala仍然遵守低精度向高精度的转变类型,自动转换(隐式转换);
- Scala中的
StringOps
是对Java中的String类型增强; Unit
:对应Java中的void,用于方法返回值的位置,表示方法没有返回值;Unit是一个数据类型,只有一个对象就是()
;Void不是数据类型,只是一个关键字。
Null
是一个数据类型,只有一个对象就是null;他是所有引用类型AnyRef
的子类;Nothing
是所有数据类型的子类,主要用于一个函数没有明确的返回值时使用。这样我们就可以把抛出的返回值,返回给任意的变量或函数
整数类型(Byte Short Int Long)
数据类型 | 描述 |
---|---|
Byte[1] | 8位有符号补码整数。数值区间为 -128 到 127 |
Short[2] | 16位有符号补码整数。数值区间为 -32768 到 32767 |
Int[4] | 32位有符号补码整数。数值区间为 -2147483648 到 2147483647 |
Long[8] | 64位有符号补码整数。数值区间为 -9223372036854775808 到 9223372036854775807 |
强制类型转换
val b1:Byte=10
val b2:Byte=(b1 + 20).toByte
浮点类型(Float Double)
#Float
val f1:Float = 1.234f
#Double
val d1 =1.234
字符类型(Char)
val c1: Char = 'a'
println(c1)
val c2:Char = '9'
println(c2)
val c3:Char = '\t' // 制表符
val c4:Char = '\n' // 换行符
println("abc" + c3 + "def")
#转义字符
val c5:Char = '\\' // \
val c6:Char = '\"' // "
#字符变底层转Ascii码
val i1:Int = 97
val c7:Char =(i1 + 1).toChar
println(c7)
//b
布尔类型(Boolean)
- 布尔类型也叫Boolean类型,Booolean类型数据只允许取值true和false
- boolean类型占1个字节。
val isTrue:Boolean=true
Unit类型、Null类型、Nothing类型
分为空值和空引用
Scala数据类型分为两类,数值类型
AnyVal
和引用类型AnyRef
Unit | 表示无值,和其他语言中void等同。用作不返回任何结果的方法的结果类型。Unit只有一个实例值,写成()。 |
---|---|
Null | null 或空引用 |
Nothing | Nothing类型在Scala的类层级的最底端;它是任何其他类型的子类型。 |
空值Unit
def m1(): Unit={
println("m1被调用")
}
val a: Unit = m1()
print("a: " +a)
空引用Null
(error) val n:Int = null
**不能使用null作为变量的一个值
被引用的值才能赋值null
- Nothing
判断是否为空时抛出异常
def m2(n:Int):Nothing={
throw new NullPointerException
}
val b= m2(0)
println(b)
//Exception in thread "main" java.lang.ExceptionInInitializerError
再次修改代码:
def m2(n:Int):Int={
if (n == 0)
throw new NullPointerException
else
return n
}
val b= m2(0)
println(b)
//返回的是Nothing和Int ,因为Noting是所有类的子类,所有写Int即可,当然,Any是所有的父类,修改成Any也没有问题