一、值与变量
//1、val(常量)、var(变量)
var/val 变量名:类型=值
var money:Int=15
money=20
println(money)
val age:Int=25
//age=19 //报错:val相当于java里的final,定义的是常量,赋值后不可改变。
//2、数据类型,强制类型转换
var a:Int=20
var b=a.asInstanceOf[Double]
println(b)
//类型判断
println(b.isInstanceOf[Int])
二、scala函数
1、定义语法:
def 函数名(参数列表):返回值类型={方法体}
2、有返回值方法的定义
def 方法名(参数名:参数类型):返回类型={方法体}
注:方法体内最后一行为返回值,无需使用return
eg:
def main(args: Array[String]): Unit = {
def add(x:Int,y:Int):Int={
x+y
}
println(add(3,5))
def three()=1+2
three()
println(three) //当调用的函数没有参数时,方法的括号可省略 three
}
3、没有返回值方法的定义
def 方法名(参数名:参数类型){方法体}
eg:
def main(args: Array[String]): Unit = {
def sayHello(): Unit ={
println("say hello...................")
}
sayHello()
}
三、scala集合
scala的所有集合类都可以在scala.collection中找到,其架构体系如下:
注意:
在scala集合中通常用两种:可变的和不可变的。区别在于集合的长度是否可以调整,对于不可变的在定义时指定长度后便不可再更改。
1、数组
Array:定长数组(长度不可变)
1)定长数组:数组采用()访问,下标从0开始。
eg:
//数组创建两种方式
var a = new Array[String](5) //方式一
//不用new,直接将值写在数组中
var b = Array("aa","bb","cc") //方式二
println(a) //返回的是数组的hashcode-->[Ljava.lang.String;@649d209a
a.length
a(1)="hello" //为指定index位置的元素进行赋值
//数组常见算法:sum min max
var c = Array(1,2,3,4,5,6,7,8)
println(c.sum)
2)变长数组:长度可变--->ArrayBuffer
eg:
import scala.collection.mutable.ArrayBuffer
//创建变长数组
var c = scala.collecton.mutable.ArrayBuffer[Int]()
//变长数组常用操作:+= ++= insert remove toArray sum max reverse
//+=可以添加一个或者多个元素
c+=1 //每次产生的都是一个新的数组
c+=2
c+=(3,4,5) //一次添加多个元素
c++=Array(6,7,8) //++可以放置一个Array进去
c.insert(0,0) //在指定的位置插入指定的数
c.remove(1) //删除指定位置的数据
c.remove(0,3) //输出范围数据,从指定位置开始,删除几个数据。从第0个开始,删除3个
c.trimEnd(2) //移除最后的两个,从尾部截断指定个数的元素
//变成定长数组toArray[T]
c.toArray //Array[Int]=Array(4,5,6,7,8)
c.toArray.sum //Int=30
c.toArray.min //Int=4
//数组的遍历
//普通遍历:
for(i <- 0 until c.length) println(c(i)) //从索引位置0开始遍历,直到c.length
//增强for循环遍历
for (i <- c) println(i) //遍历输出c中所有元素
2、List
1)创建变长List
//创建变长List
val h = ListBuffer[Int]()
//增加元素
h += 2
h += (3,4,5) //一次添加多个元素
h ++= List(6,7,8) //++可放置一个List
println(h) //ListBuffer(2, 3, 4, 5, 6, 7, 8)
//删除元素
h -= 2 //删除元素2
h -= 3 //删除元素3
println(h) //ListBuffer(4, 5, 6, 7, 8)
//-------------------------
h -= (1,4) //删除第一个元素4
println(h) //ListBuffer(5, 6, 7, 8)
h --= List(5,6,7,8) //删除一个list
println(h) //ListBuffer()
3、Map
key-value映射
//创建不可变map
val a = Map("zhangsan"->27,"lisi"->26)
println(a) //Map(zhangsan -> 27, lisi -> 26)
//a("zhangsan")=30 //报错,因为a是不可变map
//可变map创建方式:用箭头
val b =scala.collection.mutable.Map("zhangsan"->27,"lisi"->26)
//创建空的HashMap
val c = scala.collection.mutable.Map[String,Int]()
//取值map(key)
val a1 = a("zhangsan")
println(a1)
//map.getOrElse(key,default),有就取没有就用默认值
a.getOrElse("lisi",default = 10)
//更新
b("zhangsan")=9
//添加元素
b += ("bb"->4,"cc"->6)
//删减元素
b -= "bb"
//遍历
for ((key,value) <-b){
println("key is" + key + "value is" + value)
}
println("***********************************************")
for (i <- b.keySet){
println("key is"+i + "value is "+ b.getOrElse(i,0))
}