scala基础

Scala的简介

大数据中使用Scala编写的两大框架就是kafka和Spark

1. 官方网站:

https://www.scala-lang.org/

2.特点

1.即是面向对象编程又是编写函数编程(函数可以独立于对象独自存在,不必非要在对象中)

2.和Java一样是运行在JVM之上的高级语言(.scala文件进行编译===》.class文件===》运行在JVM上)

3.scala版本不兼容性(各个版本之间是不兼容的:2.11.x 2.10.x 2.9.x 各个版本之间不兼容)

4.交互式命令行:可以像Python那样在Linux中一命令行的形式执行命令

3.Scala的下载地址

https://www.scala-lang.org/download/all.html

4 IDEA 下载

https://www.jetbrains.com/idea 

scala变量,基本类型 

1.变量的声明

1.Scala中的变量必须要用var或者val进行声明

  val修饰的变量的值不可变(官方推荐使用val进行声明)

  var修饰的变量的值可变

  使用var和val声明变量的时候可以省略变量的数据类型(Scala可以根据变量的值自动判断变量的数据类型)

2.Scala中没有return这个关键字:

  Scala中表达式(方法或者函数)的最后一行值就是表达式的返回值,没有返回值的时候,表达式的数据类型是Unit

  注意:如果表达式的返回值类型是Unit,则表示表达式没有返回值,最后一行值也不返回

  注意:Scala中没有++,--,?: 三种操作符

3.Lazy:使用Lazy修饰的变量会具有惰性,只有在第一次使用的才会别初始化

 

2.Scala中的数据类型

 Byte,Short,Int,Long,Float,Double,Boolean,Char,String

Scala的控制流程结构

1.产生区间的三个函数

Range:左闭又开区间(可以设置步长)[)

Until:左闭右开区间 [)

to:左右都闭区间 []

2.for循环

从迭代器中获取数据作为循环判断条件

 1 object ForDemo {
 2   def main(args: Array[String]): Unit = {
 3     val arr = 1 to 10   
 4     // SCALA中使用FOR循环进行遍历
 5     for(item <- arr){
 6       println(s"$item")
 7     }
 8     // 当循环体内仅有一行语句的时候,可以省略花括号
 9     for(item <- arr) println(s"$item")
10     println("
===========================================")
11     // 在FOR循环中,加上IF条件守卫判断
12     for(item <- arr if item % 2 == 0) println(s"$item")
13     println("
===========================================")
14     // TODO: 打印 九九乘法表
15     // 外层循环
16     for(i <- 1 to 9){
17       // 内层循环
18       for(j <- 1 to i){
19         print(s"$i * $j = ${i * j} ")
20       }
21       println()
22     }
23     println("
===========================================")
24     // TODO: 在Scala中不建议使用多层嵌套循环格式
25     for(i <- 1 to 9; j <- 1 to i){
26       if(j == 1) println()
27       print(s"$i * $j = ${i * j} ")
28     }
29     println("
===========================================")
30     for{
31       i <- 1 to 9  // 外层循环
32       j <- 1 to i  // 内层循环
33     }{
34       if(j == 1) println()
35       print(s"$i * $j = ${i * j} ")
36     }
37     println("
===========================================")
38     val names = Array(" www.baidu.com", "www.google.com ", " www.erongda.com ")
39     for{
40       name <- names
41       tmpName = name.trim
42       if tmpName.length > 0
43     }{
44       // 将循环体中代码,放入到 循环条件代码块中编写
45       println(tmpName)
46     }
47     println("
===========================================")
48     // Python语言中,列表推导式
49     // TODO: 基于已有的集合,产生一个新的集合
50     val result: IndexedSeq[Double] = for(item <- arr if item % 2 == 0) yield {
51       Math.pow(item, 2)
52     }
53     println(result)
54   }
55 }

3.while循环

循环判断条件的Boolean值作为循环的终止条件

While 循环的使用场景:

  死循环(模拟产生数据,某个任务一直运行)

  从迭代器中获取数据

/**
  * 在Scala中初步使用While循环结构语句
  */
object WhileDemo {
  def main(args: Array[String]): Unit = {
    // 定义一个数组
    val arr: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7)
    // 遍历数组,定义一个数组索引的下标
    var index: Int = 0
    // TODO: 数组下标从0开始, arr(index)
    while(index < arr.length){
      // println("index = " + index + ", value = " + arr(index))
      println(s"index = $index, value = ${arr(index)}")
      // 索引加1
      index += 1
    }
  }
}

4. break退出循环

/**
  * 在Scala中如何使用Breaks类实例对象跳出FOR循环
  */
object BreakDemo {
  def main(args: Array[String]): Unit = {
    // 定义一个列表List
    val numList: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9)
    // 1. 创建Breaks实例对象
    val loop = new Breaks()
    // 2. 要对遍历的循环进行控制
    loop.breakable{
      for(item <- numList){
        println(s"value of is $item")
        // TODO: 当item == 5 的时候,终止遍历集合,跳出循环
        if(item == 5){
          // 3. 跳出循环
          loop.break()
        }
      }
    }
  }
}

 

原文地址:https://www.cnblogs.com/WeiKing/p/11415620.html