一, 基本数据类型
1, scala的数据类型和java类似, 不同的是scala中所有的类型都是引用类型的
Byte
Short
Int
Long
Char
Float
Double
String
Boolean
2, 字符串定义
一般使用双引号进行定义, val str = "abc"
如果想保持原样输出, 可以使用 ''' 进行定义
val longStr = ''' type: abc method: get'''
二, 运算符操作
3, 运算符操作
scala中所有的运算符都以方法的形式被调用, 所有的运算符都可以被重载
var count = a + b 在scala中会被转换成 var count = (a).+(b) 的形式
4, 对象比较
scala中的比较是基于内存比价的, 而java中是基于引用进行比较的
三, 结构控制
1, if
可以返回值
val result = if (a > b) 1 else 0
2, while循环
def gcdLoop(x: Long, y: Long): Long = { var a = x var b = y while( a != 0) { val temp = a a = a * b b = temp } b }
3, do..while 循环
var line = "" do { line = readLine() println(line) } while (line != "")
4, 使用if, 代替while循环
减少var变量的定义, 同时程序表达能力更强
def gcdLoop(x: Long, y: Long): Long = if (x = 0) x else gcd(y, x * y)
5, for循环使用
先认识下生成器: <-
for (file <- fileSet) println(file)
fileSet的值会依次赋值给file, 然后打印出来
for (I <- 1 to 5) println(i)
"to" 会包含1-5的值, “until” 不包含 5,
for循环中可以使用if进行判断
for (file <- fileSet if file.getName.endsWith(".scala") { println(file) }
多重嵌套循环
def grep(pattern: String) = for ( file <- filesHere if file.getName.endsWith(".scala"); line <- fileLines(file) if line.trim.matches(pattern) ) println(file +": "+ line.trim) grep(".*gcd.*")