• scala基础


    一、搭建环境:

    1.下载

    2.解压

    3.配置环境变量,把SCALA_HOME/bin加到path

    4.scala基于JVM运行,需要安装jdk

    二、scala是纯面向对象的语文,一切皆对象,一切对象都有方法,java是支持面向对象的

    1.var name="jack"     var 可变变量,可以被改变

       val  age=10            val 不可变变量,不能被改变

      spark中RDD的内容都是不可变的

    2. 基本类型3是有方法的:3.to 按Tab键,发现int类型的数字也有方法

      toByte   toChar  toDouble  toFloat  toInt    toLong  toShort  toString

    3.变量声明 :可指定类型,也可不指定类型

    var age:Int=0

    var name:String=null

    如果定义变量时指定了类型,后面给变量赋值只能赋该 类型及子类型

    4.一行可声明多个变量

    val age1,age2,age3=0

    5. Int本身没有to方法,scala编译运行时,隐式自动转换成rich integer类型,这种类型中有to方法

    scala> 0.to(5)
    res4: scala.collection.immutable.Range.Inclusive = Range(0, 1, 2, 3, 4, 5)

     0.to(5)  :取到Range集合

    scala类型不分java中的int和Integer

    6.   1.+(1)

    1本身是一个对象,+是它的方法,括号里是它传进来的参数

    7. scala中没有 ++,--这种操作符号 

    age+=1

    8.可导入库进行很多操作:scala本身有很多库,又可以直接使用java的库

    import scala.math._

    min(20,4)  :取最小数

    9.创建数组

    Array(1,2,3,4)

    val array=Array(1,2,3,4)

    其实内部使用Array.apply(1,2,3,4)

    val array=Array.apply(1,2,3,4)

    spark中大量使用apply

    10. if表达式

    val age=19

    if(age>=18) "adult" else  "child"

    或if(age>=18) {"adult"} else { "child"}

    在scala中if表达式是有结果的,可以用变量去保存

    val result=if(age>=18) "adult" else  "child"

    scala> val result=if(age>=18){}
    result: Unit = ()

    Unit是scala中一种类型

    scala> val result=if(age>=18){
    | "adult"
    | 9

    |}
    <console>:13: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
    "adult"
    ^
    result: AnyVal = 9

    var buffered = 0

    val result=if(age>=18){
        "adult"
        buffered = 10

        buffered
        }

    buffered块表达式的最后一行,作为默认的返回值

    scala块表达式中,看着没有返回值,实际最后一行就是返回值

    11.打印

    println("spark")

    print("spark")

    占位符

    printf(" %s  is the future of big data. ","spark")

    12.  输入:读取输入的内容

    readLine   不加参数的时候,括号可以不写

    readLine(" please enter your password:")

    13.读取整数

    readInt

    14.while循环

    var element=100

    while(element>10){

        println(element)

        element-=1

    }

    15.for循环

    0 to element:本身是一个集合

    for(i<- 0 to element) println(i)

    <- 是提取符,每次提取集合中的一个元素

    for(i<- 0 to element  if i%2 == 0 ) println(i)

    16.中止循环

    val n=10

    def f1:Any={

        for(i<- 1 to 10){

            if(i==n) return i

            println(i)

    }

    17.函数定义def,函数要想有返回值,后面要加=

    def f2:Any={

        for(i<- 1 to 10){

            if(i==n) return i

            println(i)

    }

    def f3(p1:String,p2:Int=30)=p1+p2

    调用f3("Spark")

    结果:Spark30

    调用函数可以不按参数顺序,按名称去调用

    f3(p2=100,p1="Scala")

    18.变长参数

    def sum(numbers:Int *)={

        var result = 0

        for(element<- numbers)

            result+=element

        result                        //最后一条语句是返回值

    }

    调用:sum(1,2,3,4,5,6,7)

    def sum(numbers:Int *)={ var result = 0;for(element<- numbers) result+=element;result}  //多条语句写一行,要用;分隔

    sum(1 to 100)是不可以的

    sum(1 to 100:_*) :这样调是用以的,:_*是把Range里面的每一个元数提取出来

    19.过程与函数的区别:过程是没有返回值的函数

     如果想一次输入多行,可用:paste模式来粘贴多行,要想退出paste模式用快捷键,Ctrl+D

  • 相关阅读:
    每日作业报告
    每日作业报告
    每日作业报告
    每日作业报告
    每日作业报告
    每日作业报告
    每日作业报告
    每日作业报告
    每日作业报告
    关系模式分解例题
  • 原文地址:https://www.cnblogs.com/ngy0217/p/10054453.html
Copyright © 2020-2023  润新知