zoukankan      html  css  js  c++  java
  • 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()
            }
          }
        }
      }
    }

     

  • 相关阅读:
    django 之(一) --- DjangoRestFormwork
    工具 --- Git理解
    部署 --- Docker使用
    django 之(三) --- 会话|关系|静态*
    flask 之(七) --- 认证|文件|部署
    系统 --- Linux系统环境搭建
    flask 之(六) --- API|RestfulApi
    flask 之(五) --- 对象|钩子|拆分
    数据类型检测
    基本数据类型和引入数据类型
  • 原文地址:https://www.cnblogs.com/WeiKing/p/11415620.html
Copyright © 2011-2022 走看看