Scala概述
什么是Scala
Scala是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台(Java虚拟机),并兼容现有的Java程序
Scala语言的特点
1.优雅:这是框架设计师第一个要考虑的问题,框架的用户是应用开发程序员,API是否优雅直接影响用户体验。
2.速度快:Scala语言表达能力强,一行代码抵得上Java多行,开发速度快;Scala是静态编译的,所以和JRuby,Groovy比起来速度会快很多。
3.能融合到Hadoop生态圈:Hadoop现在是大数据事实标准,Spark并不是要取代Hadoop,而是要完善Hadoop生态。JVM语言大部分可能会想到Java,但Java做出来的API太丑,或者想实现一个优雅的API太费劲。
Scala编译器安装
安装JDK
因为Scala是运行在JVM平台上的,所以安装Scala之前要安装JDK
在Windows平台下安装Scala
访问Scala官网http://www.scala-lang.org/下载Scala编译器安装包,目前最新版本是2.12.x,但是目前大多数的框架都是用2.10.x编写开发的,所以这里推荐2.10.x版本,下载scala-2.10.6.msi后点击下一步就可以了
在Linux平台安装Scala
下载Scala地址http://downloads.typesafe.com/scala/2.10.6/scala-2.10.6.tgz然后解压Scala到指定目录
tar -zxvf scala-2.10.6.tgz -C /usr/java
配置环境变量,将scala加入到PATH中
vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.7.0_45
export PATH=$PATH:$JAVA_HOME/bin:/usr/java/scala-2.10.6/bin
Scala工具包安装
目前Scala的开发工具主要有两种:Eclipse和IDEA,这两个开发工具都有相应的Scala插件,如果使用Eclipse,直接到Scala官网下载即可http://scala-ide.org/download/sdk.html。
由于IDEA的Scala插件更优秀,大多数Scala程序员都选择IDEA,可以到http://www.jetbrains.com/idea/download/下载社区免费版,点击下一步安装即可,安装时如果有网络可以选择在线安装Scala插件。这里我们使用离线安装Scala插件:
1.安装IDEA,点击下一步即可。由于我们离线安装插件,所以点击Skip All and Set Defaul
2.下载IEDA的scala插件,地址http://plugins.jetbrains.com/?idea_ce
3.安装Scala插件:Configure -> Plugins -> Install plugin from disk -> 选择Scala插件-> OK -> 重启IDEA
![](https://i-blog.csdnimg.cn/blog_migrate/a93162691014a843d8289f83dc7ee28d.png)
Scala基础
声明变量
package cn.edu.hust.scala
object BaseDemo {
def main(args: Array[String]){
//定义一个变量这个变量相当于final
val x=1
println(x)
//这次定义的变量可以改变
var y=10
y=y+10
println(y)
println("hello scala")
//可以在声明时候指定变量类型,指定的类型放在变量之后
val s:String="name"
println(s)
}
}
常用的基本类型
Scala和Java一样,有7种数值类型Byte、Char、Short、Int、Long、Float和Double(无包装类型)和一个Boolean类型。
条件表达式
package cn.edu.hust.scala
object IFDemo {
def main(args: Array[String]): Unit = {
//在scala中都是对象,可以进行一般逻辑或者运算操作
val x:Int=10
val y=if(x>2) 4 else -1
println(y)
println(x+y)
//这些运算是重载的方法
println(x.+(y))
//还可以使用if直接赋值,如果没有else,这里直接返回()
val z=if(y>100) 1
println(z)
//还可以使用esleif,也可以使用混合编程
val t=if(x<0) -1 else if(x<100) "error" else 100
println(t)
}
}
块表达式
object BlockExpressionDemo {
def main(args: Array[String]) {
val x = 0
//在scala中{}中课包含一系列表达式,块中最后一个表达式的值就是块的值
//下面就是一个块表达式
val result = {
if (x < 0){
-1
} else if(x >= 1) {
1
} else {
"error"
}
}
//result的值就是块表达式的结果
println(result)
}
}
循环
package cn.edu.hust.scala
object ForDemo {
def main(args: Array[String]) {
//使用循环,会自动生成一个与1to 10想类似的数据结构
val z = for (i <- 1 to 10) yield i
println(z)
//可以操作每一个值使用yield
val x = for (i <- 1 to 10) yield i * 10
println(x)
//可以在for循环中使用判断
val y = for (i <- 1 to 10; if (i % 2 == 0)) yield i
println(y)
//使用循环
val t = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 0)
val arr = for (i <- t) yield i + 2
println(arr.length)
//取出array使用小括号,使用until来进行取下标值
for (i <- 0 until t.length ) println(i+":"+arr(i))
}
}