关键词:
文章目录
零、本讲学习目标
- 学会变量声明
- 掌握数据类型
- 掌握表达式
- 掌握循环
- 掌握方法和函数
初学Scala时,建议读者在Scala命令行模式中操作,最终程序的编写可以在IDE中进行。在Windows的CMD窗口中或CentOS的Shell命令中执行scala命令,即可进入Scala的命令行操作模式。下面我们将在Scala的命令行操作模式中学习Scala的基础知识。
一、变量声明
(一)简单说明
- Scala中变量的声明使用关键字
val
和var
。val
类似Java中的final
变量,也就是常量,一旦初始化将不可修改;var
类似Java中的非final
变量,可以被多次赋值,多次修改。
(二)利用val声明变量
1、声明方式
- val <变量名>[: 数据类型] = 变量值
2、案例演示
- 声明一个
val
字符串变量name
- 上述代码中的第二行为执行第一行的输出信息,从输出信息中可以看出,该变量在Scala中的类型是
String
。 - 当然也可以在声明变量时指定数据类型,与Java不同的是,数据类型需要放到变量名的后面,这使得面对复杂的数据类型时更易阅读。
- 由于
val
声明的变量是不可修改的,若对声明的变量name
进行修改,则会报错
- 因此,如果希望变量可以被修改,就需要使用var声明。
(三)利用var声明变量
1、声明方式
- var <变量名>[: 数据类型] = 变量值
2、案例演示
- 声明一个
var
字符串变量message
,然后利用print函数输出其值
- 对var变量message重新复制,再输出其值
(四)换行输入语句
- 如果需要换行输入语句,那么只需要在换行的地方按回车键,解析器会自动在下一行以竖线进行分割
- 如果要输入多行字符串,用双引号是无法实现的,得使用三引号
- Scala跟Java一样,没有像Python那样用
\\
作为续行符
(五)同时声明多个变量
- Scala还可以将多个变量放在一起进行声明,将一个数值同时赋给多个变量
- Scala不能一次对多个变量赋不同的值
- 注意:Java也可以将多个变量放在一起进行声明,但是各个变量是独立赋值的
- 注意:Python只能将可迭代的数据赋给多个变量
(六)总结变量的声明
- 定义变量需要初始化,否则会报错。
- 注意:Java里可以声明变量而不赋值
- 定义变量时可以不指定数据类型,系统会根据初始化值推断变量的类型。
- 注意:Java声明变量必须指定类型
- Scala中鼓励优先使用val(常量),除非确实需要对其进行修改,才使用var。
- Scala语句不需要写结束符,除非同一行代码使用多条语句时才需要使用分号隔开。
二、数据类型
(一)Scala类型层次结构
- 在Scala中,所有的值都有一个类型,包括数值和函数。如下图所示,说明了Scala的类型层次结构
1、Any类型
- Any是Scala类层次结构的根,也被称为超类或顶级类。Scala执行环境中的每个类都直接或间接地从该类继承。该类中定义了一些通用的方法,例如
equals()
、hashCode()
和toString()
。Any
有两个直接子类:AnyVal
和AnyRef
。
2、AnyVal类型
AnyVal
表示值类型,有9
种预定义的值类型,它们是非空的Double
、Float
、Long
、Int
、Short
、Byte
、Char
、Unit
和Boolean
。Unit
是一个不包含任何信息的值类型,和Java语言中的void
等同,用作不返回任何结果的方法的结果类型。Unit
只有一个实例值,写成()
。
3、AnyRef类型
AnyRef
表示引用类型。所有非值类型都被定义为引用类型。Scala中的每个用户定义类型都是AnyRef
的子类型。AnyRef
对应于Java中的java.lang.Object
。
4、案例演示
- 定义一个类型为
List[Any]
的变量list
,list
中包括字符串、整数、字符、布尔值和函数,由于这些元素都属于对象Any
的实例,因此可以将它们添加到list
中。
- 通过增强for循环遍历列表元素,并显示其数据类型
- 获取列表前三个元素构成的子列表
(二)数据类型转换
1、值类型的转换
- Scala中的值类型可以按下图的方式转换,且转换是单向的
- 将
Long
转换成Float
类型,注意在这种情况下会丢失一些精度
2、引用类型的转换
三、表达式
四、循环
五、方法和函数
spark基础学习笔记10:scala集成开发环境(代码片段)
...境会在两种集成开发环境里创建Scala项目在上一讲《Spark基础学习笔记09:Scala基础》里,我们都是利用ScalaShell交互式环境来学习Scala基础知识,虽然交互式有快捷的优点,但是要写比较完整的程序,编辑就显得... 查看详情
spark基础学习笔记12:scala内建控制结构
文章目录零、本讲学习目标一、条件表达式(一)语法格式(二)执行情况(三)案例演示任务1、根据输入值的不同进行判断任务2、编写Scala程序,判断奇偶性二、块表达式(一)语法格式ÿ... 查看详情
spark基础学习笔记08:scala简介与安装(代码片段)
文章目录零、本讲学习目标一、Scala简介(一)Scala概述(二)函数式编程(三)Scala特性1、一切都是对象2、一切都是函数3、一切都是表达式(四)在线运行Scala二、Windows上安装Scala(一)... 查看详情
spark基础学习笔记14:scala数据结构(代码片段)
文章目录零、本讲学习目标一、数组(Array)(一)定长数组1、数组定义(1)定义数组时初始化数据(2)定义时指定数组长度,后赋值2、数组遍历(1)传统for循环方式(2)增强for循环方... 查看详情
spark基础学习笔记22:sparkrdd案例分析
文章目录零、本讲学习目标一、案例分析:SparkRDD实现单词计数(一)案例概述(二)实现步骤1、新建Maven管理的Spark项目2、添加Scala和Spark依赖3、创建WordCount对象4、对于程序代码进行解析5、将Spark项目编译和... 查看详情
spark基础学习笔记24:sparksql数据源
文章目录零、本讲学习目标一、基本操作(一)默认数据源1、默认数据源Parquet2、案例演示读取Parquet文件(1)在SparkShell中演示(2)通过Scala程序演示(二)手动指定数据源1、format()与option()方法概... 查看详情
spark基础学习笔记02:搭建spark环境(代码片段)
文章目录零、本讲学习目标一、搭建Spark单机版环境(一)在私有云上创建ied实例(二)修改ied实例的主机名(三)设置IP地址与主机名的映射(四)通过SecureCRT访问ied虚拟机(五)下载、安... 查看详情
spark基础学习笔记03:spark运行架构及原理(代码片段)
文章目录零、本讲学习目标一、Spark架构(一)采用主从模型(二)整体流程二、Spark执行过程(一)SparkonStandalone模式(二)SparkonYARN模式1、YARN-Cluster运行流程2、YARN-Client运行流程3、两种模式的比... 查看详情
三万字,spark学习笔记(代码片段)
Spark基础Spark特性Spark使用简练优雅的Scala语言编写,基于Scala提供了交互式编程体验,同时提供多种方便易用的API。Spark遵循“一个软件栈满足不同应用场景”的设计理念,逐渐形成了一套完整的生态系统(包括Spar... 查看详情
spark基础-scala学习(代码片段)
Scala解析器的使用REPL:Read(取值)->Evaluation(求值)->Print(打印)->Loop(循环)。scala解析器也被称为REPL,会快速编译scala代码为字节码,然后交给JVM执行valresult=1设置变量不可变varresult=2可变的变量valname:String=null声明变... 查看详情
spark基础-scala学习(代码片段)
函数式编程将函数赋值给变量匿名函数高阶函数高级函数的类型推断scala的常用高阶函数闭包sam转换currying函数return将函数赋值给变量scala中的函数是一等公民,可以独立定义,独立存在,而且可以直接将函数作为值赋值给变量sca... 查看详情
spark基础-scala学习(集合)(代码片段)
集合scala的集合体系结构ListLinkedListSet集合的函数式编程函数式编程综合案例:统计多个文本内的单词总数scala的集合体系结构scala中的集合体系主要包括:Iterable、Seq、Set、Map。其中Iterable是所有集合trait的根trait。这个结构与java... 查看详情
spark基础-scala学习(代码片段)
面向对象编程之Traittrait基础知识将trait作为接口使用在trait中定义具体方法在trait中定义具体字段在trait中定义抽象字段trait高级知识为实例对象混入traittrait调用链在trait中覆盖抽象方法混合使用trait的具体方法和抽象方法trait的构... 查看详情
spark基础学习笔记32:sparkstreaming概述
文章目录零、本讲学习目标一、SparkStreaming概述(一)什么是SparkStreaming(二)SparingStreaming的主要优点1、易于使用2、易于与Spark体系整合二、SparkStreaming工作原理(一)SparkStreaming工作流程图(二)... 查看详情
三万字,spark学习笔记
Spark基础Spark特性Spark使用简练优雅的Scala语言编写,基于Scala提供了交互式编程体验,同时提供多种方便易用的API。Spark遵循“一个软件栈满足不同应用场景”的设计理念,逐渐形成了一套完整的生态系统(包括Spar... 查看详情
spark基础学习笔记16:创建rdd
文章目录零、本讲学习目标一、RDD为何物(一)RDD概念(二)RDD示例(三)RDD主要特征二、做好准备工作(一)准备文件1、准备本地系统文件2、准备HDFS系统文件(二)启动SparkShell1、启动HD... 查看详情
2022年spark基础学习笔记
...、Spark学习笔记在OpenStack私有云上创建与配置虚拟机Spark基础学习笔记01:初步了解SparkSpark基础学习笔记02:Spark运行时架构Spark基础学习笔记03:搭建Spark单机版环境Spark基础学习笔记04:搭建Spark伪分布式环境Spark基础学习笔记05:... 查看详情
spark基础学习笔记30:sparksql案例分析
文章目录零、本讲学习目标一、使用SparkSQL实现词频统计(一)数据源-words.txt(二)创建Maven项目(三)添加依赖和构建插件(四)修改源目录名称(五)创建日志属性文件(六)创... 查看详情