win10安装
先下载sdk包 :https://www.scala-lang.org/download/2.10.4.html
解压安装
配置环境变量(SCALA_HOME)和java的一样 --》 %SCALA_HOME%\bin
在cmd里输入scala测试
IDEA使用
- 下载scala插件 安装之后重启idea
- 新建一个maven项目
右键点击项目名 --》选择 Add Frameworks Support —>在左侧菜单找到scala —》找到安装目录–》选择ok–》退出
- 新建scala文件
一定要选择Object类型
基础
变量: var
常量: val
声明变量: var demo01: Int=11
声明变量时,类型可以省略,编译器自动推导,即类型推导 : var demo01 =11
当不确定给新声明的变量什么值时 可以使用 下划线代替:"_"
例:
1. var demo01 :Int =_ 相当于 ===> 0
2. var demo02 :Double =_ 相当于 ===> 0.0
3. var demo03 : Boolean =_ 相当于 ===> false
4. var demo04 :String=_ 相当于 ===> null
定义一个函数(方法) :
数据类型
- 数值类型(AnyVal):
- 整数: Byte、Short、Int、Long
- 浮点数: Float、Double
- 字符: Char
- 布尔: Boolean
- 无值: Unit 相当于java里的 void 在定义函数时使用
- 引用类型(AnyRef):
- 字符串:String
- NULL :空 null
- collections: 集合
- class: 类
- Nothing: 最底层,所有类型的子类
- Any :最顶层
类型转换
- 自动转换: 弱向强 (隐式转换)
- 强制转换:
String.toInt 、 toByte 、toDouble。。。。
运算符
- Scala中其实是没有运算符的,所有运算符都是方法。
1)当调用对象的方法时,点.可以省略
2)如果函数参数只有一个,或者没有参数,()可以省略
println(3.toString()) ===》 println(1 toString)
循环
- if…else…
- 在scala中 if…else是有返回值 默认就是代码块的最后一行代码的执行结果
- 要是想获取结果 可以用具体对应内容接收,也可以用Any接收(相当于Object)
例:
val demo01:Any = if (age < 18) {
XXXX
}else{
XXX}
3. 三元运算: val res: Any = if (age < 18) “童年” else “成年”- for
- 基本语法
for(i <- 1 to 3){
print(i + " ")
}
println()
2. to:表示前后闭合 、 Until:前闭后开- for复杂一点的用法:
- 循环守卫,即循环保护式(也称条件判断式,守卫)。保护式为true则进入循环体内部,为false则跳过,类似于continue
- for(i <- 1 to 3 if i != 2) {
print(i + " ")
}
println()- 循环步长 by表示步长
- for (i <- 1 to 10 by 2) {
println(“i=” + i)
}- 循环嵌套
- 没有关键字,所以范围后一定要加;来隔断逻辑
1. for(i <- 1 to 3; j <- 1 to 3) {
println(" i =" + i + " j = " + j)
}- 引入变量
1.for推导式一行中有多个表达式时,所以要加 ; 来隔断逻辑
2.for推导式有一个不成文的约定:当for推导式仅包含单一表达式时使用圆括号,当包含多个表达式时,一般每行一个表达式,并用花括号代替圆括号
for(i <- 1 to 3; j = 4 - i) {
println(“i=” + i + " j=" + j)
}- 循环返回值
- 将遍历过程中处理的结果返回到一个新Vector集合中,使用yield关键字。
- val res = for(i <- 1 to 10) yield i
println(res)- 倒序打印
- for(i <- 1 to 10 reverse){
println(i)
}- While和do…While循环控制
1. do{
循环体(语句)
循环变量迭代
} while(循环条件)- 中断循环
- Scala中使用breakable控制结构来实现break和continue功能。
- 采用Scala自带的函数,退出循环
1. import scala.util.control.Breaks
Breaks.breakable(
for (e <- 1 to 5) {
println(e)
if (e == 5) Breaks.break()
}
)
println(“正常结束循环”)- 对break进行省略
- import scala.util.control.Breaks._
object TestBreak {
def main(args: Array[String]): Unit = {
breakable {
for (elem <- 1 to 10) {
println(elem)
if (elem == 5) break
}
}
println(“正常结束循环”)
}
异常处理
- try()catch语句
- scala是以模式匹配的方式捕获异常的。 如果不需要使用捕获到的异常,可以使用_代替变量名
- try{
//code that may contain an exception.
}
catch {
case _ : IllegalArgumentException => println(“haha”) //如果不需要使用这个异常,用_代替变量
case a : typeOfException => {逻辑代码}
}finally {
// This block will definitely run
}- 在方法中直接抛出 其实是返回Nothing类型的对象
- throw new Exception(“这是一个异常”)