Spark基础学习笔记09:Scala基础

Posted howard2005

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark基础学习笔记09:Scala基础相关的知识,希望对你有一定的参考价值。

文章目录

零、本讲学习目标

  1. 学会变量声明
  2. 掌握数据类型
  3. 掌握表达式
  4. 掌握循环
  5. 掌握方法和函数

初学Scala时,建议读者在Scala命令行模式中操作,最终程序的编写可以在IDE中进行。在Windows的CMD窗口中或CentOS的Shell命令中执行scala命令,即可进入Scala的命令行操作模式。下面我们将在Scala的命令行操作模式中学习Scala的基础知识。

一、变量声明

(一)简单说明

  • Scala中变量的声明使用关键字valvarval类似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只能将可迭代的数据赋给多个变量

(六)总结变量的声明

  1. 定义变量需要初始化,否则会报错。
  • 注意:Java里可以声明变量而不赋值
  1. 定义变量时可以不指定数据类型,系统会根据初始化值推断变量的类型。
  • 注意:Java声明变量必须指定类型
  1. Scala中鼓励优先使用val(常量),除非确实需要对其进行修改,才使用var。
  2. Scala语句不需要写结束符,除非同一行代码使用多条语句时才需要使用分号隔开。

二、数据类型

(一)Scala类型层次结构

  • 在Scala中,所有的值都有一个类型,包括数值和函数。如下图所示,说明了Scala的类型层次结构

1、Any类型

  • Any是Scala类层次结构的根,也被称为超类或顶级类。Scala执行环境中的每个类都直接或间接地从该类继承。该类中定义了一些通用的方法,例如equals()hashCode()toString()Any有两个直接子类:AnyValAnyRef

2、AnyVal类型

  • AnyVal表示值类型,有9种预定义的值类型,它们是非空的DoubleFloatLongIntShortByteCharUnitBooleanUnit是一个不包含任何信息的值类型,和Java语言中的void等同,用作不返回任何结果的方法的结果类型。Unit只有一个实例值,写成()

3、AnyRef类型

  • AnyRef表示引用类型。所有非值类型都被定义为引用类型。Scala中的每个用户定义类型都是AnyRef的子类型。AnyRef对应于Java中的java.lang.Object

4、案例演示

  • 定义一个类型为List[Any]的变量listlist中包括字符串、整数、字符、布尔值和函数,由于这些元素都属于对象Any的实例,因此可以将它们添加到list中。
  • 通过增强for循环遍历列表元素,并显示其数据类型
  • 获取列表前三个元素构成的子列表

(二)数据类型转换

1、值类型的转换

  • Scala中的值类型可以按下图的方式转换,且转换是单向的
  • Long转换成Float类型,注意在这种情况下会丢失一些精度

2、引用类型的转换

三、表达式

四、循环

五、方法和函数

以上是关于Spark基础学习笔记09:Scala基础的主要内容,如果未能解决你的问题,请参考以下文章

Spark基础学习笔记08:Scala简介与安装

Spark基础学习笔记10:Scala集成开发环境

Spark基础学习笔记13:Scala函数

Spark基础学习笔记11:Scala运算符

Spark基础学习笔记15:Scala类和对象

Spark基础学习笔记12:Scala内建控制结构