Scala入门
- 可伸缩
- 面向对象
- 函数式
- 基于JVM
- 可调用丰富的Java类库
- 静态类型(编译时检查)
- 扩展性
- 应用 Spark由scala编写
Scala安装
java
- 下载.tar.gz包 http://www.oracle.com/technetwork/java/javase/downloads/index.html
- 解压到/usr/local/java/下
配置环境变量 vim /etc/profile
JAVA_HOME=/usr/local/java/jdk1.8.0_144 JRE_HOME=/usr/local/java/jdk1.8.0_144/jre CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib PATH=$JAVA_HOME/bin:$PATH export PATH JAVA_HOME CLASSPATH
source /etc/profile
- java 测试是否正常
scala
- 下载.tgz包 http://www.scala-lang.org/
- 解压到/usr/local/下
配置环境变量
export PATH="$PATH:/usr/local/scala-2.12.3/bin"
source /etc/profile
- scala 测试是否正常
数据类型
- Byte、Short、Int、Long、Float、Double、Char、Boolean
- String
- Unit -> 相当于void
- Null
- Nothing 是任何其他类型的子类型
- Any 是任何其他类型的超类
- AnyRef 是所有引用类的基类
变量
- var 变量
- val 常量
- lazy val
var name : String = "xiaoming"
name = "xiaomingAbcdef"
val comm: String = "book"
修饰符
- private(比java更严格)
- protected
- public(默认)
- 作用域保护 -> private[包名] 该包名的可以访问,其他不能
练习
给出三角形的三条边,判断三角形的类型
object HelloWorld {
def main(args: Array[String]): Unit = {
println("Hello Scala")
work(6, 6, 6)
}
def work(arg0: Double, arg1: Double, arg2: Double): Unit = {
//先排序
var a: Double = 0
var b: Double = 0
var c: Double = 0
val list = List(arg0, arg1, arg2)
println(list)
val listSorted = list.sorted
a = listSorted.head
b = listSorted(1)
c = listSorted(2)
//判断是否是三角形
if (a + b <= c) {
println("不是三角形")
return
}
//确定三角形类型
judgementType(a, b, c)
judgementType2(a, b, c)
}
def judgementType(a: Double, b: Double, c: Double): Unit = {
if (a * a + b * b > c * c) {
println("锐角三角形")
} else if (a * a + b * b < c * c) {
println("钝角三角形")
} else {
println("直角三角形")
}
}
def judgementType2(a: Double, b: Double, c: Double): Unit = {
if (a == b && b == c) {
println("等边三角形")
} else if ((a == b && a != c) || (c == b && a != b) || (a == c && a != b)) {
println("等腰三角形")
}
}
}