Spark基础学习笔记09:Scala基础
Posted howard2005
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark基础学习笔记09:Scala基础相关的知识,希望对你有一定的参考价值。
文章目录
零、本讲学习目标
- 学会变量声明
- 掌握数据类型
- 掌握表达式
- 掌握循环
- 掌握方法和函数
初学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基础学习笔记09:Scala基础的主要内容,如果未能解决你的问题,请参考以下文章