scala文件编译
scalac
*.scala-->*.class
windos安装scala环境
1.下载
2.安装
3.配置环境变量
ubuntuan安装*dep
dpkg -i解压安装
scala基础
java常量
final String sre ="hello"
scala常量
val v =100 //常量
var v 100 = 100 //变量
一、scala数据类型
Byte
Char
Short
Int
Long
Float
Double
Boolean
不区分基本类型和class,都是class,因此可以直接访问方法
二、调用函数和方法
import scala.math._ //通配符==*,该包下定义函数
import math._ //同上
>>sqrt(2) //直接使用,不需要从类调用静态方法,开平方
>>pow(2,3) //2的三次方
>>min(3,4) //取最小值
>>:paste //可以粘贴代码
三、scala控制结构和函数
---循环
while
for(i<-1 to 100) //to的范围是闭区间[]
for(i<- 1 unit 100) //to的范围是半开区间[)
for(ch<- "abc") println(ch)//便利字符
//scala没有break和continue语句
1.使用boolean变量
2.嵌套函数
---高级循环
for(i<-1to 3;j<-1 to 3) print(i*j)//双重循环
for(1<-1 to 3;j<-1 to 3 if i == j) println("i*j")//带条件的双重循环
for(i<-1 to 3;from = 4-i;j<-from to 3) println(i*j)//借助变量
---函数
//方法是在对象上,而函数不是
//函数定义指定名称、参数和body
//必须指定参数类型
定义函数
def Holloword()={
println("hello world")
}//无返回值
def add(a:Int,b:Int):Int={
var res = a+b
res//最后的表达式是函数的返回值
}//有返回值
//递归函数必须有返回值
def fac(n:Int):Int={
if(n<1) 1
else n * fac(n-1)
}
//默认参数和命名参数
def prefixStr(str:String,left:String="[")={
var res = left + str
println(res)
}
//变长参数
def sum(args:Int*):Int={
var r = 0
for(arg<-args)
r+=arg
r
}
val s = sum(1,2,3,4,5) //right
val s = sum(1 to 5) //error
val s = sum(1 to 5:_*) //right
def sayHi(names:String*){
for(name<-names)
println("hi, "+name)
}
四、scala异常处理和处理延时
--Procedures 过程
//过程和函数很像,没有返回值(其实是Unit),没有=指定
def box(s:String){
var border = "-"*s.length+"--\n"
println(border+"|"+s+"|\n"+border)
}
def box(..):Unit={
}
---Lazy Values
//延迟初始化变量知道首次被访问
lazy val r = scala.io.Source.formFile("x").mkString
---Exception
//scala没有被检异常,不用声明抛出语句
//throw表达式的类型是Nothing,ifelse的类型不能是Nothing,因此就是不为Nothing的分支类型
try{
...
}catch{
case_:MalformedURLException=>//不适用异常对象
case ex:IOException => ex.printStackTrace()
}finall{
println("over")
}
五、scala数组相关操作
---定长数组
>>val num = new Array[Int](10)//Array--声明数组 []--声明类型 ()--声明长度
num: Array[Int] = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
>>val str = new Array[String](10)
str: Array[String] = Array(null, null, null, null, null, null, null, null, null, null)
>>val dou = Array[Double](10)
dou: Array[Double] = Array(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0)
//推断类型,有值不需要new
val s = Array{"hello","world"}
//使用()而不是[]访问数组
s(1)
---变长数组(数组缓冲区)
//初始化为0
import scala.collection.mutable.ArrayBuffer
val b = ArrayBuffer[Int]()
//在末端添加一个元素
b+=1
//追加多个元素
b+=(1,2,3)
//追加一个集合
b+=Array(2,3,4)
//移除最后的5个元素
b.trimEnd(5)
//在“2”之前插入6
b.insert(2,6)
b.insert(2,78,9)
//移除索引值为2后面的一个元素
b.remove(2)
//移除索引值为2后面的3个元素
b.remove(2,3)
//将数组缓冲区编程数组
b.toArray()
//将数组转化为缓冲区
b.toBuffer
---遍历数组和缓存区
for(i<-0 until a.length)
println(i +":"+a(i))
//step 2
0 until (a.length,2)
//反序
(0 until 10).reverse
//遍历输出
for(ele<-a)
println(ele)
//不修改原数组,产生新数组
val a = Array(2,3,4)
val r = for(ele<-a) yield 2*ele
for(e<-a if e%2==0)yield 2*e
//数组变换方法
a.filter(_%2==0).map(2*_)
//常用算法
a.sum //
a.max
b.sorted(a)//
+ //操作一个值
++ //集合,数组
= //改变原缓冲区,否则原缓冲区不变,生成新的buf
: //以:结尾通常是前导操作
- //
/: //左包含 (1,2,3) (3)(_-_)
//3-1-2-3=-1
:\ //右包含 (1,2,3) (3)(_-_)
//
六、eclipse安装与卸载scala环境
---eclipse卸载scala环境
1.eclipse-->help-->install new softwore
2.already installed..
3.进入installed software
4.点击scala ide for eclipse
5.点击uninstall ...
6.重启eclipse
---eclipse安装scala环境
1.eclipse -->help -->eclipse marketplace
2.输入scala搜索
3.installe
4.eclipse ide 插件
5.yes
6.重启
七、scala和java互操作
import scala.collection.JavaConversions.bufferAsJavaList
import scala.collection.mutable.ArrayBuffer