Scala基础语法、函数及Array、Map、Tuple

第一课

内容概述

1.Scala基础语法

2.Scala中函数

3,Scala中的Array、Map、Tuple

Scala基础

1.   Scala的重大价值

首先,java并不伟大,伟大的是JVM(来自于java之父),而scala是基于JVM的。Scala可以调用所有的java的库,scala是升级版的java。升级之一切皆对象,对象皆有方法,列如整型常量1,在scala里也是有方法的,1.tostring()在scala里是合法的。升级之二面向函数和面向对象的结合,面向对象有利于团队开发,而面向函数则有利于方法的书写,适合大型项目,通常是java开发项目的代码量的1/5-1/10。

Scala主要用于大数据中的大数据计算,spark是有scala开发的,实现算法简洁优雅,kafka通信中间件是由scala开发的。

Spark环境:版本2.10.4 + java1.80.60-b27

2.   Scala基础语法

变量的声明:var 可变变量声明,val int a

                             val 不可变变量声明,val int a

对于变量来说,尽可能使用不可变变量进行声明,因为在处理数据时,大多数是不可变的,例如spark内部数据的默认类型是不可变,许多通信交流时,通信对象是不可变的。在声明变量时可以声明类型也可以不声明类型,但是声明类型后,赋值时,只能赋值同类型或子类型的值。

        Java中存在基本类型和封装类型,但是scala中基本类型和引用类型是可以自动转换的,即基本类型也是有方法的,如1.tostring()(一切皆对象),再如,1+1 执行时是1.+(1)。

        Scala中无++、——操作符,但是可以用 +=、-=代替,scala提供了大量的库,如scala.math._库中min()、max()。

        在建立对象时,scala是调用object的apply方法进行的,类似于java中的工厂方法。

        Scala中表达式是有结果或返回值的,这点与java不同,代码块的返回值是,代码块的最后一行的内容的值。

3.   Scala函数入门

输入函数:println(“ a b c ”)                        //输出结果后换行

                      println<=> println()        //输出为空

                      print                    //输出后不换行

               print(“\n”)<=> println

               printf(“%s”,s)              //格式化输出

读入函数 readLine <=>redline()        //无提示符读入

               readInt                                            //读取指定整型类型的值

循环结构:while循环

               for循环:  for(i <- 0 to 20 )   println(i)

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

        函数定义 def   f1:int = { 函数体 }   (最后一行为返回值)

在函数定义时,若是无法推断函数的返回值时,函数必须显示声明返回值。

        默认参数:def f1(param1:int, param2:String = “spark”) = param1 + param2

        变长参数:def f1(param:int*) = {}

        range转换为函数参数:1 to 100 : _*  把range中的所有元素提取出来。

       过程即是没有返回值的函数。

        Lazy变量:只有在第一次调用时才执行的变量,一般用于耗时的操作中,如文件的读取。

        异常处理:try{

}catch{

}finally{

}

catch代码块中用于捕获异常,finally始终执行,用于一些类似于关闭文件的操作。

4.   Scala 中Array、Map、Tuple

Array可以先声明后赋值,亦可以直接赋值。例如

        Val array = Array[Int](5)

               array(1) = 2

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

可变数组ArrayBuffer,可以加入任意数量的元素,不会出现数组越界。

        加入操作:arrayBuffer += (2,3,4)

        删除操作:.trimStart(n)    //从数组的头开始删除n个元素

.trimEnd(n)    //从数组的尾开始删除n个元素

.remove(d)     //从数组中删除第d位的元素

并返回删除元素的值

                               .remove(d,n) //删除数组中从d位算起的其后n个数

              插入操作:.insert(d,x)//在d位插入元素,其中可以插入一个或多个元素

              转换操作:arraybuffer.toArray    //将可变数组转换为不可变数组

                                          Array.toBuffer      //将不可变数组转换为可变数组

       数组遍历:for(i<- 0 until (arr.length, 2))   println(arr(i))

                            for(i <- (0 untilarr.length) .reverse)   println(arr(i))//从尾部开始遍历

数组转换为字符串:arr.mkString(“,”)

  排序:            scala.util.Sortint.quickSort(arr)

  遍历时可以使用yield,其将收集yield后的表达式的值并组成一个Array

for (i <- arr if i % 3 == 0) yield i*i

过滤: arr.filter(_ % 3 == 0).map( i => i*i )

 

Map存储的是键值对

val person =  map(“spark” -> 6, “hadoop” -> 11)   //赋值

person += (“flink”-> 5)                 //添加

person -= (“flink” -> 5)                   //删除

person.contains(“spark”)                 //包含

person.getorElse(“spark”,100)   <=>

if(person.contains(“spark”)person(“spark”)else 100)

for((key,value) <- person)  println(key + ” ”+value)  //遍历

              scala.collection.immutable.SortedMap(“key”->value)//按key值排序

 

tuple元组    val tuple = (“spark”, 6, 9, 6)  //赋值

                                   tuple._1                        //取元组中位置为1的元素




说明:该笔记来源于DT大数据IMF课程第一课

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值