3 数据类型、变量、操作符、语句
3.1 基本数据类型
scala 的基本类型有 8 种:
Byte、Char、Short、Int、Long、Float、Double、Boolean
Scala中没有基本数据类型的概念,所有的类型都是对象。
如上图所示:
Anyval:代表所有基本类型。
AnyRef:代表所以引用类型,包括 Scala class 和 Java class。
Any:是所有类的超类。如果不知道表达式的结果是什么类型可以用Any。
Unit:只有一个实例值 (),方法返回Unit 相当于返回了Java中的void。
scala> val a:Int = 10
a: Int = 10
scala> val b:String = "hehe"
b: String = hehe
scala> val c:Any = "hainiu"
c: Any = hainiu
scala> val d:Unit = ()
d: Unit = ()
3.2 变量声明
val:变量的引用不可变,底层相当于final 修饰
var:变量的引用可变
scala推荐用val,val就是value的缩写。
scala语言结尾不用分号和Python语言比较相似。
scala不指定变量类型是会根据值进行自动推断,当然也可以在初始化的时候明确指定变量的类型;
// val 修饰的引用不可变
scala> val a:Int = 10
a: Int = 10
// scala不指定变量类型是会根据值进行自动推断
scala> val a = 10
a: Int = 10
scala> a = 11
<console>:12: error: reassignment to val
a = 11
^
// 变量的引用可变
scala> var b:Int = 10
b: Int = 10
scala> b = 20
b: Int = 20
// 如果给变量指定具体类型,会校验数据类型和指定类型是否一致
scala> val c:Int = "hainiu"
<console>:11: error: type mismatch;
found : String("hainiu")
required: Int
val c:Int = "hainiu"
^
3.3 操作符
Scala 为它的基本类型提供了丰富的操作符集,包括:
算数运算符:加(+)、减(-) 、乘(*) 、除(/) 、余数(%);
关系运算符:大于(>)、小于(<)、等于(=)、不等于(!=)、大于等于(>=)、小于等于(<=);
逻辑运算符:逻辑与(&&)、逻辑或(||)、逻辑非(!);
位运算符:按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移(<<)、右移(>>)、无符号右移(>>>);
赋值运算符:“=” 及其与其他运算符结合的扩展赋值运算符,例如 +=、-=;
注意:
1)与java不同的是这些运算符的操作,都是方法的调用;
2)在 scala中各种赋值表达式的值都是Unit类型;
scala> var b = 1
b: Int = 1
// b = 2 的结果是Unit,所以c的类型是Unit
scala> val c = b = 2
c: Unit = ()
// b 的值改变了
scala> println(b)
2
3.4 语句
scala 语句行尾的位置建议不加分号;
scala 代码可以自动格式化
如果一行有多个语句,可以用分号分隔,但不建议这么写。