scala基础

Posted weiking

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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("\\n===========================================")
11     // 在FOR循环中,加上IF条件守卫判断
12     for(item <- arr if item % 2 == 0) println(s"$item")
13     println("\\n===========================================")
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("\\n===========================================")
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("\\n===========================================")
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("\\n===========================================")
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("\\n===========================================")
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循环

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()
        
      
    
  

 

 

以上是关于scala基础的主要内容,如果未能解决你的问题,请参考以下文章

Scala 基础:Scala 函数式编程基础概念定义调用机制

[Scala] Scala基础知识

Scala基础语法之Trait详解

Scala:基础知识01

Scala之旅-基础

Scala基础简述