scala 概述
(一)scala是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特性,以java虚拟机为目标类运行环境并将面向对象和函数式编程语言的最佳特性结合在一起
scala的特性
1 运行在jvm 和javaScript 之上语言
2 静态类型
3混合式编程范式 面向对象编程
4混合式编程范式—函数式编程
5复杂的类型系统
6 简洁、优雅、灵活的语法
7可扩展的架构
8 并发性
Scala 基础语法
1.声明变量
val/val 变量名:变量类型=变量值
val/var a:Int=1
注:val 修饰的变量不可以重新赋值,而var修饰的变量可以重新赋值,scala 中变量声明类型可以省略,解析器会根据值进行推断
Scala 里可以通过type 关键字来声明类型。
type 相当于声明一个类型别名:
// 把String 类型用S 代替
type S = String
val name: S = "bigdata"
println (name)
当val被声明为lazy时,初始化将被推迟,只有当这个变量真正被使用到的时候,变量的赋值代码才会真正的执行
2 字符串
scala提供多种定义字符串的方式,我们可以根据需要来选择最方便的定义方式
val/var 变量名=“字符串”
val/var 变量名 = """字符串1字符串2"""
scala中,可以使用插值表达式来定义字符串,有效避免大量字符串的拼接。
val/var 变量名 = s"${变量/表达式}字符串"
a=hello
val b="${a}word"//hellloword
val/var 变量名 = s"""${变量/表达式}字符串"""
3 数据类型
Scala和Java一样,有多种数值类型Byte、Char、Short、Int、Long、Float、Double类型和1个Boolean类型。
4 操作符
Scala中的+ - * / %等操作符的作用与Java一样,位操作符 & | ^ >> <<也一样。
注:
1.Scala中的操作符实际上是方法
2.Scala中没有++、--操作符,需要通过+=、-=来实现同样的效果(因为++ -- 前置后置容易混淆)
3.+ - * / %是方法,那么就可以进行操作符重载,完成特殊的运算(也就是自己在类中定义+ - * / %方法表示特殊的运算)
循环判断
1 块表达式
定义变量时可以使用 {} 包含一系列表达式,其中{}块的最后一个表达式的值就是整个块表达式的值。
2 条件表达式
Scala条件表达式的语法和Java一样,只是更加简洁,且Scala中if else表达式是有返回值的
注:Scala中没有三元表达式
如果if或者else返回的类型不一样,就返回Any类型
对于没有返回值的,使用Unit,写做(),相当于java中的void
循环表达式
●简单for循环:
for (变量 <- 表达式/数组/集合) {循环体}
for(i <- 1 to 10) println(i) //循环打印1~10
嵌套for循环
for (变量1 <- 表达式/数组/集合; 变量2 <- 表达式/数组/集合) {循环体}
for(i <- 1 to 9; j <- 1 to 9){
if(i >= j ) print(s"${j} * ${i} = ${j*i}")
if(j == 9) println()
}
守卫
for表达式中,可以添加if判断语句,这个if判断就称之为守卫。我们可以使用守卫让for表达式更简洁。
for(i <- 表达式/数组/集合 if 表达式) {循环体}
for(i <- 1 to 10 if i % 3 == 0) println(i) //3,6,9
●for推导式
在for循环体中,可以使用yield表达式构建出一个集合,我们把使用yield的for表达式称之为推导式
即可以使用for推导式生成一个新的集合(一组数据)
//该for表达式会构建出一个集合
val res = for(i <- 1 to 10) yield i * 10 //10,20,30,40...
while语句本身没有值,即整个while语句的结果是Unit类型的()
var n = 1;
val result = while(n <= 10){
n += 1
}
println(result)//(0
println(n)//55