1、变量定义
Scala有两种变量定义的方式----var和val,这两种定义的方式是有差别的,val相当于java中的final变量,被定义的变量是不可以在更改,而var定义的变量则与之相反。
scala> val v1 = "Hello"
v1: String = hello
scala> var v2 = "world"
v2: String = world
2、定义函数
def max(x: Int, y: Int): Int = {
if (x > y) x
else y
}
2.1、从上面的列子中,我们知道scala的函数式通def来定义的,max表示的是这个函数的函数名,括号内的参数与我们习惯的java不同,x、y是指参数名,“:Int”是指参数的类型为Int的。上面的函数代码其实可以简化为如下所示:
def max(x: Int,y: Int) = if(x > y) x else y
2.2、下面我们来看下面这个例子
scala> def hello() = println("Hello")
hello: ()Unit
3、循环语句
3.1、while循环
3.1.1、我们新建一个xunhuan.scala文件,代码如下:
var i = 0
val arr = Array("one", "two", "three")
while(i < arr.length) {
println(arr(i))
i += 1
}
one
two
three
3.2.1、同样我们先以例子开始,文件foreach1.scala
//for循环arr
for (item <- arr)
println(item)
//foreach循环arr
arr.foreach(item => println(item))
上面的for、foreach遍历的结果都如while的结果一样。针对foreach可以将代码简化如下:
arr.foreach(println)
4、数组与集合
4.1、带类型的参数化数组
Scala是可以使用new实例化对象或类实例的,当在实例化对象时,可以使值或类型参数化,如下实例化一个BigInteger对象并参数化值123:
val big = new BigInteger("123")
4.2、List
这里要强调的Scala的List不同与java的List,Scala的List是不可变的,也就是说Scala的List不能像java的List一样,在增加列表元素时,Scala的List其实是重新创建了一个新的List对象。
4.2.1、List常见的操作符“:::”和“::”
::: 操作符:三个冒号的操作方法实现List集合的叠加,如下代码所示:
val oneTwo = new List(1,2)
val twoThree = new List(2,3)
val result = oneTwo ::: twoThree
println(result)
//输出结果如下
List(1,2,2,3)
val oneTwoThree = 1 :: twoThree
println(oneTwoThree)
//输出结果
List(1,2,3)
4.2.2、List的API文档,请查看 Scala API
5、元组(Tuple)
与列表一样,元组也是不可变的,但与列表的不同是,元组可以包含不同类型的元素。从某种意义上来说,Scala元组有点类似javaBean,我们知道javaBean是装有多个类型的属性,而Scala的元组因为可以装多个类型的元素,并且可以简单的返回一个元组。元组元素的访问时通过“下划线和一个从1开始的索引”,如下面例子:
val people = (27, "175cm", "China", "male")
println(people._1)
println(people._2)
println(people._3)
println(people._4)
//运行结果
27
175cm
China
male
6、Set和Map
上面已经说过,Scala集合系统有可变和不可变集合,那么在实际的情况下需要引用的Set或Map要主要import 相对应的Set或Map。可变与不可变的差别这里就不再重复嗷述了。
Map的定义与添加元素跟java中的Map不一样,如下代码:
import scala.collection.mutable.Map
val tMap = Map[Int, String]()
tMap += (1 -> "This is first")
tMap += (2 -> "This is second")
tMap += (3 -> "This is third")
println(tMap(2))
//输出结果
This is second