变量
关键字 val---不可变(重新赋值会报错) var---可变
- var,可以重复定义相同变量,但是变量不能切换类型;
函数:
scala的函数定义比较奇怪,下图可以很好标示它的格式,这个是标准格式,在实际使用时可以适当调整(省去返回类型,省去返回关键字return..)
入门样例:
object HelloWord {
def main(args: Array[String]) {
print("Hello World")
}
def printSon() : Unit = {
println("I Love Scala")
}
}
数据类型
基础数据类型:Byte Short Int Long Char String Float Double Boolean
- scala的基本数据类型和java基本一样,区别是首字母要大写
基本类型之间的操作:scala中的操作都是对象方法,比如 2+1==》2.+(1) (语法糖无处不在啊)
算数操作(+-*/ %)、关系运算、逻辑运算、位运算、
控制结构
if、while、do while 、for
if("hello"=="hell") 1 else 0
def gcdLoop(x: Long, y: Long): Long = {
var a = x
var b = y
while (a != 0) {
val temp = a
a = b % a
b = temp
}
b
}
var line = ""
do {
line = readLine()
println("Read: "+ line)
} while (line != "")
scala> val filesHere = (new java.io.File(".")).listFiles
//集合操作方式
scala> for (file <- filesHere)
| println(file)
//间接调用方式(不常用)
for (i <- 0 to filesHere.length - 1)
println(filesHere(i))
for 比较特殊 <- 标示生成器, 将集合中的元素依次赋值给循环变量, 1 to 5可以生成 1 2 3 4 5 ; 1 until 5 生成 1 2 3 4
数据结构
数据结构是跨语言的,scala也不例外;
数组(Array ArrayBuffer)、列表(List)、集合(Set)、Map、元组(不同类型的变量集合)、队列(Queue)、栈(Stack)
特殊的类型是None Some Option;前两者都是Option的子集
数组:
创建(定长数组两种创建方式、变长数组一种创建方式)
scala> val strArray2=Array("First","Second")
strArray2: Array[String] = Array(First, Second)
scala> val numberArray=new Array[Int](10)
numberArray: Array[Int] = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
scala> import scala.collection.mutable.ArrayBuffer
import scala.collection.mutable.ArrayBuffer
scala> val strArrayVar=ArrayBuffer[String]()
strArrayVar: scala.collection.mutable.ArrayBuffer[String] = ArrayBuffer()
追加:
+= ++= 都可实现
删除:trimEnd(n) ---删除末尾n个元素
插值:insert(n, x1, x2, x3) ---这个比较变态,一次可以在n位置处插入这么多
toArray和toBuffer可以把定长非定长换着玩~
查询:(i)即可,轮询的话使用for循环
还有 scala加入了 min max sum toString mkString等方法
List
创建:List("jin", "killer")
查询:list(i)
插值: