zoukankan      html  css  js  c++  java
  • 大数据学习之Scala语言基本语法学习36

    一:scala简介

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

    Scala语言很强大,集成了面向对象和函数式编程的特点。

    运行在JVMjdk)。

    大数据中为什么学习scala?

    sparkscala语言编写。

    pythonspark 挺好的

    javaspark 很糟糕(代码实在是太多了)

    scalaspark 很完美

    二:scala特点

    1)优雅

    框架设计中第一个要考虑的问题就是API是否优雅。

    精简的封装。

    代码精简(少)。

    2)速度快

    scala语言表达能力强。

    一行代码=多行java代码,开发速度快。

    3)完美融合hadoop生态

    scala是静态编译,表达能力强并且代码量少。

    三:安装Scala

    1)下载

    2)解压

    3)配置环境变量(我是win10系统的,简单的安装,没有弄什么SACLA_HOME那些花里胡哨的东西。直接添加Scala

    bin目录到Path中就行了)

    SCALA_HOME=

    path

    四:Scala基础语法

    1Scala程序的开始(编译器用的是Idea。安装一个Scala的插件就可以用了)

    Helloworld

    2)Scala的数据类型

    Scalajava一样,有8中数值类型:

    Byte/Char/Short/Int/Long/Float/Double/Boolean/

    Unit类型(void)

    注意:scala中无包装类型。

    Unit:表示无值,用于不返回任何结果的方法的结果类型。

    3Scala定义变量

    两个关键字:val var

    val:定义变量值不可变

    var:定义的变量值是可变的

    scala编译器会自动的推断类型!

    指定类型: val str:String = "dawn"

    注意:类型要保持一致

    Unit = ()()相当于什么都没有用()表示。

     

    4)条件表达式

    if:判断(和java差不多)

    val y = if(x>0) 1 else 2

     

    Any:包含AnyvalAnyRef

    Anyval:包含scala所有类型

    AnyRefScala classesJava Classes

    Any相当于javaObject

    val k = if(x<0) 0 else if(x>=1) 1 else -1

    ifelse if:多个条件的判断,符合条件看左侧,不符合条件看右侧

     

    5)块表达式

    scala{}包含一系列表达式,块中的最后一个表达式的值就是块的值

    6)循环

    Scala拥有与JavaC++相同的whiledo循环

    Scala中,可以使用forforeach进行迭代

    使用for循环案例:

    注意:

    * <-  表示Scala中的generator,即:提取符

    *)第三种写法是第二种写法的简写

    for循环中,还可以使用yield关键字来产生一个新的集合

    在上面的案例中,我们将list集合中的每个元素转换成了大写,并且使用yield关键字生成了一个新的集合。

    使用while循环:注意使用小括号,不是中括号

    使用do ... while循环

    使用foreach进行迭代

    注意:在上面的例子中,foreach接收了另一个函数(println)作为值

     源码:

    package dawn.day01
    /**
      * @author Dawn
      * 2019年6月11日17:01:23
      * @version 1.0
      * scala基本语法基础
      */
    object Demo1 {
      def main(args: Array[String]): Unit = {
    
        //定义一个集合
        var list =List("dawn","Anlis","xiaomei")
    
        var i=0
        println("**********************第一种循环for **********************************")
        for(s <- list){
          println(s)
        }
    
        println("**********************第二种循环while **********************************")
        while(i<list.length){
          println(list(i))
          i+=1
        }
    
        println("**********************第三种循环do...while **********************************")
        i=0
        do{
          println(list(i))
          i+=1
        }while(i<list.length)
    
        println("**********************第四种循环foreach(println) **********************************")
        list.foreach(println)
    
        println("测试yield方法")
        //测试yield
       var newList=for{
         s <-list
         if s.length<=5
       }yield (s)
    
        //toBuffer相当一java中toString
        println(newList.toBuffer)
      }
    }
    

      

    7)方法定义

    Scala+ - * / % 的作用和Java一样,但是特别的是,这些操作符实际上是方

    法。个人觉得scala中所有定义的变量都是对象

    1 to 10

    1.to(10)

    定义一个方法:

    def m1(a:Int,b:Int):Int = {

    a + b

    }

    def:定义方法的关键字

    m1:方法名

    a:参数列表

    b:参数列表

    Int:返回值类型

    a + b:函数体

  • 相关阅读:
    hdu 1241 Oil Deposits(dfs入门)
    hdu 1022 Train Problem I(栈)
    DFS中的奇偶剪枝(转自chyshnu)
    ural 1821. Biathlon
    hdu 1237 简单计算器(栈)
    hdu 1010 Tempter of the Bone(dfs+奇偶剪枝)
    1119. Metro(动态规划,滚动数组)
    hdu 1312 Red and Black(dfs入门)
    C#匿名委托和匿名方法使用小技巧
    ubuntu下netbeans乱码问题解决
  • 原文地址:https://www.cnblogs.com/hidamowang/p/11006322.html
Copyright © 2011-2022 走看看