1.数据类型
-
Any: 所有类的超类
-
AnyVal: 所有值类型父类,是Any的子类
-
AnyRef: 所有引用类型的父类,是Any的子类
-
Null: 所有AnyRef的子类
-
Nothing: 所有类的子类,多用于抛出异常
-
Unit: 无值,类似java的void
-
Byte/Short/Int/Long/Float/Double/Char/String/Boolean/String:scala中每种类型都是类可直接操作
2.运算符
-
数值运算符:加(+), 减(-), 乘(*), 除(/), 取余(%)
-
关系运算符: 等于(==), 不等于(!=), 小于(<), 大于(>), 大于等于(>=), 小于等于(<=)
-
逻辑运算符: 短路逻辑与(&&), 短路逻辑或(||), 逻辑非(!),逻辑或(|),逻辑与(&)
-
位运算: 位与(&),位或(|),位异或(^), 取反(~), 左移位(<<), 右移位(>>), 无符号左移(<<<),无符号右移(>>>)
-
对象比较运算符: 比较对象值(==),比较内存地址(eq方法)
3.声明变量
val a: Int = 1 // 不可变变量,类似java中的final修饰的变量
var b: Int = 1 // 可变变量,声明变量首选val,除非不得不使用var
//scala语言具有强大的类型推断功能,声明变量时刻省略类型使其自行推断
val a = 1
var b = 1
//符号类型一般用于模式匹配中,作为标识比较常用
val s = 'start
4.控制结构
if(score >= 90){
"等级A"
}else if(score >= 80){
"等级B"
}else{
"一般"
}
//三元运算符
val abs = if(num > 0) num else -num
//匹配表达式,类似java的switch语句
val result = num match {
case 1 => "one"
case 2 => "two"
case _ => "not 1 or 2"
}
5.for循环
for(i <- 1 to 10) println(i) //1 2 3 4 5 6 7 8 9 10
//1 4 7 10,by设定步长
for (i <- 1 to 10 by 3) println(i)
//yield关键字将结果收集起来返回一个集合
val range = for(i <- 1 to 10) yield i * 2
//if表达式可设置守卫(多个守卫使用;分割),对每个元素进行一次约束
val words = List("apple", "banana", "lime", "orange")
for(word <- words if word.length > 5) println(word)
// 双层for循环
for(i <- 1 to 5; j <- 1 to i) if(i != j) print("*") else println()
//break
for(i <- 1 to 10){
import scala.util.control.Breaks._
if(i > 5) break
}
6.while循环
var i = 1
var sum = 0
while(i <= 100){ //while循环,scala不支持i++操作
sum += i
i += 1
}
do{ // do-while
sum += i
i += 1
}while(i <= 100)