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 |
true或false |
Unit |
表示无值,和其他语言中void等同。用作不返回任何结果的方法的结果类型。 |
Null |
null 或空引用 |
Nothing |
Nothing类型在Scala的类层级的最底端;它是任何其他类型的子类型 |
Any |
Any是所有其他类的超类 |
AnyRef |
AnyRef类是Scala里所有引用类(reference class)的基类 |
注:scala中数据类型均为首字母大写。
类型推断:Scala会区分不同类型的值,并且会基于使用值的方式来确定其类型。
二. 变量与常量
1. 变量:在程序运行过程中值可能发生改变的量叫做变量。
var 变量名 = 初始值
var 变量名 : 数据类型 = 初始值
2. 常量:在程序运行过程中值不会发生变化的量叫做常量。
val 变量名 = 初始值
val 变量名 : 数据类型 = 初始值
三. 运算符
算术 运算符 |
+ |
两个数相加(字符串拼接) |
1+2或1.+(2) |
- |
两个数相减 |
1-2或1.-(2) |
|
* |
两个数相乘 |
1*2或1.*(2) |
|
/ |
两个数相除(整数相除得整数解) |
1/2或1./(2) |
|
% |
两个数取余 |
1%2或1.%(2) |
|
关系 运算符 |
> |
判断左值是否大于右值,true为真,false为假 |
1>2或1.>(2) |
< |
判断左值是否小于右值,true为真,false为假 |
1<2或1.<(2) |
|
>= |
判断左值是否大于等于右值,true为真,false为假 |
1>=(2)或1.>=(2) |
|
<= |
判断左值是否小于等于右值,true为真,false为假 |
1<=(2)或1.<=(2) |
|
== |
判断左值是否等于右值,true为真,false为假 |
1==2或1.==(2) |
|
!= |
判断左值是否不等于右值,true为真,false为假 |
1!=2或1.!=(2) |
逻辑 运算符 |
&& |
且/与(一假为假,两真为真) |
1>2 && 2>3 或 1>2.&&(2>3) |
|| |
或(一真为真,两假为假) |
1>2 || 2>3 或 1>2.||(2>3) |
|
! |
非,取反 |
!(1>2) |
|
位 运算符 |
& |
按二进制位进行与运算,两位同时为1结果才为1,否则为0 |
0 & 1或0.&(1) |
| |
按二进制位进行或运算,两位只要有一个为1则结果为1 |
0 | 1或0.&(1) |
|
^ |
按二进制位进行异或运算,两位不同时为1,相同时为0 |
0^1或0.^(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(参数列表) 一次性调用
- import 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 函数名 ([参数列表]) : [返回值类型] = 方法体/{ 方法体 }
函数一旦定义完成,可通过函数名调用函数。
匿名函数:是在定义函数的时候不给出函数名。匿名函数是使用箭头“=>”定义的,箭头的左边是参数列表,箭头右边是表达式,表达式将产生函数的结果。
调用匿名函数:可以将函数赋值给一个常量或变量,然后通过常量名或变量名调用该函数
高阶函数:就是操作其他函数的函数。高阶函数可以使用函数作为参数,也可以使用函数作为输出结果。高阶函数经常将只需要执行一次的函数定义为匿名函数作为参数。
递归函数:
柯里化(Currying):指将原来接受两个参数的函数变成新的接受一个参数的函数的过程。新的函数返回一个以原有第二个参数为参数的函数。
Spark 第三讲 Scala数组与函数基础相关推荐
- Spark学习(6)——scala数组操作
Array 在scala中,Array代表的含义与Java类似,也是长度不可变的数组,此外 由于Java和scala都是运行在JVM中,双方可以互相调用,因此scala的底层 实际上是Java数组,例 ...
- C语言基础:数组作为函数参数传递演示源码
将做工程过程中常用的内容片段记录起来,如下内容内容是关于C语言基础:数组作为函数参数传递演示的内容,应该能对小伙伴也有好处. #include <stdio.h>void show_arr ...
- C++(12)--函数基础:按值传递、传递数组、函数指针
模块化编程--函数 1. 函数基本知识 2. 函数的参数 2.1 按值传递机制(小议按引用传递) 2.2 使用数组做函数参数(用户头文件,const的防改) 2.3 使用二维数组作为函数的参数 2.4 ...
- 笔记整理1----Java语言基础(一)01 变量与数据类型+02 运算符与表达式+03 条件判断与循环语句+04 JAVA数组+05 函数与方法
01 变量与数据类型+02 运算符与表达式+03 条件判断与循环语句+04 JAVA数组+05 函数与方法 第01天 java基础知识 今日内容介绍 Java概述.helloworld案例 工 ...
- 大数据基础之Scala——Scala数组方法,史上最全,只要你能全部背上即可成为万人敬仰的大佬,任何Scala随便戳戳!!!
Scala数组 数组是一种可变的.可索引的数据集合.在Scala中用Array[T]的形式来表示java中的数组形式T[ ]. //声明一个数组对象 方法一:var numbers:[String]= ...
- C语言基础入门48篇_26_身份证号校验程序(以身份证的校验方式是实例加深对数组及函数封装的理解、字符-‘0‘得到字符对应的int类型数字)
本篇根据以二代身份证的校验方式是实例加深对数组及函数封装的理解 1. 第二代身份证号的组成 第二代身份证号为18位,各位数字对应了不同的信息(以下顺序从左往右): AABBCCYYYYMMDDXXXV ...
- [学习报告]《LeetCode零基础指南》(第三讲)一维数组
1.顺序存储 顺序存储结构,是指用一段地址连续的存储单元来依次存储数据.如图所示,每个蓝色方块都对应了数组中的一个数据.数据有类型,例如:32位整型int.单精度浮点型float.双精度浮点型dou ...
- PHP数组函数基础知识
什么是数组?数组就是被命名的用来存储一系列数值的地方.数组array是非常重要的数据类型.相对于其他的数据类型,它更像是一种结构,而这种结果构可以存储一系列数值.数组能够在单一变量名中存储许多值,并且 ...
- 《LeetCode零基础指南》(第三讲) 一维数组
文章目录 零.了解网站 1.输入输出 2.刷题步骤 3.尝试编码 4.调试提交 一.概念定义 1.顺序存储 2.存储方式 3.长度和容量 4.数组的索引 5.数组的函数传参 二.题目分析 1.数组的查 ...
最新文章
- 文巾解题 695. 岛屿的最大面积
- 点运算符(.)和中括号运算符([])有哪些区别
- 在oracle中通过connect by prior来实现递归查询!
- 大数据常见问题:数据倾斜
- 移动端1px线适配问题-------适配各种编译CSS工具 stylus sass styled-componet实现方法...
- 有哪些网站社区可以看原创平面设计大师作品?
- 《数字逻辑设计与计算机组成》一 第2章 2.1 简介
- HDU - 5950 Recursive sequence(矩阵快速幂)
- 【TWVRP】基于matalb粒子群算法求解带时间窗的多客户单仓库车辆路径规划问题【含Matlab源码 1407期】
- dnf全部使用_dnf命令 (常用总结)
- 形式化验证(Formal verification)如何确保完美的智能合同?
- oracle sql语句加减,Oracle sql 常用加减法
- matlab中fic算法,基于MatLab的三种群Volterra模型数值求解.pdf
- 【读书笔记】好好思考-成甲
- Android监听前后台切换展示开屏广告
- Android 内外边距
- 从点阵到OLED屏幕——动态扫描显示原理
- MySQL format()\CAST()\CONVERT()指定特定个数的小数
- 音视频处理 C语言编译器
- linux系统装fluent没有界面,linux系统下安装fluent