Spark 第三讲 Scala数组与函数基础

一. 常见数据类型

  Byte

  8位有符号补码整数。数值区间为 -128 127

  Short

  16位有符号补码整数。数值区间为 -32768 32767

  Int

  32位有符号补码整数。数值区间为 -2147483648 2147483647

  Long

  64位有符号补码整数。数值区间为 -9223372036854775808 9223372036854775807

  Float

  32 , IEEE 754 标准的单精度浮点数

  Double

  64 IEEE 754 标准的双精度浮点数

  Char

  16位无符号Unicode字符, 区间值为 U+0000 U+FFFF

  String

  字符序列

  Boolean

  truefalse

  Unit

  表示无值,和其他语言中void等同。用作不返回任何结果的方法的结果类型。

  Null

  null 或空引用

  Nothing

  Nothing类型在Scala的类层级的最底端;它是任何其他类型的子类型

  Any

  Any是所有其他类的超类

  AnyRef

  AnyRef类是Scala里所有引用类(reference class)的基类

注:scala中数据类型均为首字母大写。

类型推断:Scala会区分不同类型的值,并且会基于使用值的方式来确定其类型。

 

二. 变量与常量

1. 变量:在程序运行过程中值可能发生改变的量叫做变量。

                var  变量名  =  初始值

                var  变量名  :  数据类型  =  初始值

2. 常量:在程序运行过程中值不会发生变化的量叫做常量。 

                val  变量名  =  初始值

                val  变量名  :  数据类型  初始值

 

三. 运算符

算术

运算符

+

两个数相加字符串拼接

1+21.+(2)

-

两个数相减

1-21.-(2)

*

两个数相乘

1*21.*(2)

/

两个数相除整数相除得整数解

1/21./(2)

%

两个数取余

1%21.%(2)

关系

运算符

判断左值是否大于右值,true为真,false为假

1>21.>(2)

判断左值是否小于右值,true为真,false为假

1<21.<(2)

>=

判断左值是否大于等于右值,true为真,false为假

1>=(2)1.>=(2)

<=

判断左值是否小于等于右值,true为真,false为假

1<=(2)1.<=(2)

==

判断左值是否等于右值,true为真,false为假

1==21.==(2)

!=

判断左值是否不等于右值,true为真,false为假

1!=21.!=(2)

逻辑

运算符

&&

/与(一假为假,两真为真

1>2 && 2>3 

1>2.&&(2>3)

||

一真为真,两假为假

1>2 || 2>3 

1>2.||(2>3)

!

非,取反

!(1>2)

运算符

&

按二进制位进行运算,两位同时为1结果才为1,否则为0

0 & 10.&(1)

|

按二进制位进行运算,两位只要有一个为1则结果为1

0 | 10.&(1)

^

按二进制位进行异或运算,两位不同时为1,相同时为0

0^10.^(1)

赋值

运算符

=

将右侧的值赋于左侧

var num = 2 

-=

执行加法后再赋值左侧

a += 2

+=

执行减法后再赋值左侧

a -= 1

*=

执行乘法后再赋值左侧

a *= 2

/=

执行除法后再赋值左侧

a /= 3

%=

执行取余后再赋值左侧

a %= 5

>>=

左移位后赋值左侧

a <<= 2

<<=

右移位后赋值左侧

a >>= 2

&=

按位运算与后赋值左侧

a &= 2

|=

按位运算与后赋值左侧

a ^= 2

^=

按位运算或后赋值左侧

a |= 2

四. 数组(Array)

1. 定义:Scala 语言中提供的数组是用来存储固定大小的同类型元素,数组中某个指定的元素是通过索引来访问的,数组的第一个元素索引为0,最后一个元素的索引为元素总数减1

# 定义
val 数组名 : Array[元素类型] = new Array[元素类型](长度)
val 数组名 : Array[元素类型] = Array(值1,值2…值n)
# 赋值
数组名(索引) = 值
# 获取
数组名(索引) 

2. 基本操作:

基本操作

描述

数组名.length

返回数组的长度

数组名.head

查看数组第一个元素

数组名.tail

查看数组除了第一个元素剩下的元素

数组名.isEmpty

判断数组是否为空

 3. 常用方法:

        数组方法使用需要提前导包,以下方式:

  •                 import Array._    引入Array中所有的成员,后面可多次调用
    •                import Array.range    引入Array的range成员,后面可多次调用
      •                Array.range(参数列表)    一次性调用

方法

描述

数组名.contains()

判断数组是否包含元素x,返回布尔类型的值

concat( 数组1, 数组2… 数组n )

合并数组,返回新的数组

数组名.mkString(连接符)

通过连接符转为字符串,返回字符串

range( 起始值, 结束值)

创建指定区间内的数组

range( 起始值, 结束值, 步长)

按步长创建指定区间内的数组

ofDim[元素类型]( 行数, 列数)

创建二维数组

  4. 定义多维数组:多维数组一个数组中的值可以是另一个数组,另一个数组的值也可以是一个数组。

# 定义二维数组
val 数组名 : Array[Array[元素类型]] = Array(Array(值1,值2…), Array(值1,值2…) …)
val 数组名 = Array.ofDim[元素类型](行数,列数) 
# 赋值
数组名(索引)(索引) = 值
# 获取
数组名(索引)(索引) 

 注:合并数组也可以使用操作符“++”

 

五. 函数

def  函数名 ([参数列表]) : [返回值类型] = { 
	方法体 
	[return 返回值]
} 

def  函数名 ([参数列表]) : [返回值类型] = 方法体/{ 方法体 }

函数一旦定义完成,可通过函数名调用函数。

如果函数定义在一个类或对象中,如下调用函数: 名称. 函数名 ( 参数列表 )
若函数没有返回值,返回值类型可以为Unit,或直接省略返回值类型。

匿名函数:是在定义函数的时候不给出函数名。匿名函数是使用箭头“=>”定义的,箭头的左边是参数列表,箭头右边是表达式,表达式将产生函数的结果。

调用匿名函数:可以将函数赋值给一个常量或变量,然后通过常量名或变量名调用该函数

高阶函数:就是操作其他函数的函数。高阶函数可以使用函数作为参数,也可以使用函数作为输出结果。高阶函数经常将只需要执行一次的函数定义为匿名函数作为参数。

 递归函数:

柯里化(Currying):指将原来接受两个参数的函数变成新的接受一个参数的函数的过程。新的函数返回一个以原有第二个参数为参数的函数

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值