Scala语言基础

1、Scala简介

Scala是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台(Java虚拟机),并兼容现有的Java程序。它也能运行于CLDC配置的Java ME中。目前还有另一.NET平台的实现,不过该版本更新有些滞后。Scala的编译模型(独立编译,动态类加载)与Java和C#一样,所以Scala代码可以调用Java类库(对于.NET实现则可调用.NET类库)。Scala包括编译器和类库,以及BSD许可证发布。
学习Scala编程语言,为后续学习Spark奠定基础。

2、Scala安装与配置

安装:
Scala需要Java运行时库,安装Scala需要首先安装JVM虚拟机,推荐安装JDK1.8。
http://www.scala-lang.org/ 下载Scala2.11.8程序安装包
在这里插入图片描述
根据不同的操作系统选择不同的安装包,下载完成后,将安装包解压到安装目录。

注意:安装时,安装路径中不能含有空格

将scala安装目录下的bin目录加入到PATH环境变量:

SCALA_HOME:
SCALA_HOME= D:\scala-2.11.8


PATH:
在PATH变量中添加:%SCALA_HOME%\bin

完成以上流程后,在命令行输入:scala,进入如下界面:
在这里插入图片描述

注意:该操作Windows和Linux配置流程是一样的。可以参考Java的JDK的配置过程。

到此为止,Scala的安装已经成功。

配置IDEA:
(1)打开IDEA工具,如图:点击Configure
在这里插入图片描述

(2)点击Plugins
在这里插入图片描述
(3)在搜索栏里输入:scala
在这里插入图片描述(4)下载后,应用并重启IDEA即可

(5)创建Maven项目

创建的maven项目默认是不支持scala的,需要为项目添加scala的framework,如图:
在这里插入图片描述

在这里选择Scala后,在右边的Use library中配置你的安装目录即可,最后点击OK。
在这里插入图片描述
(6)在项目的目录结构中,创建scala文件夹,并标记为source(file-project structure)
在这里插入图片描述
在这里插入图片描述
(7)以上配置都完成后,就可以在scala上点击右键创建scala class了
在这里插入图片描述

3、Scala的运行环境

REPL(Read Evaluate Print Loop):命令行

IDE:图形开发工具

The Scala IDE (Based on Eclipse):http://scala-ide.org/
IntelliJ IDEA with Scala plugin:http://www.jetbrains.com/idea/download/
Netbeans IDE with the Scala plugin

4、Scala的常用数据类型

注意:在Scala中,任何数据都是对象。例如:
在这里插入图片描述

(1)数值类型:Byte,Short,Int,Long,Float,Double

Byte: 8位有符号数字,从-128 到 127

Short: 16位有符号数据,从-32768 到 32767

Int: 32位有符号数据

Long: 64位有符号数据

例如:

val a:Byte = 10
a+10
得到:res9: Int = 20

这里的res9是新生成变量的名字
val b:Short = 20
a+b

注意:在Scala中,定义变量可以不指定类型,因为Scala会进行类型的自动推导

(2)字符类型和字符串类型:Char和String

对于字符串,在Scala中可以进行插值操作。
在这里插入图片描述

注意:前面有个s;相当于执行:"My Name is " + s1

(3)Unit类型:相当于Java中的void类型
在这里插入图片描述
(4)Nothing类型:一般表示在执行过程中,产生了Exception

例如,我们定义一个函数如下:
在这里插入图片描述

5、Scala变量的申明和使用

(1)使用val和var申明变量
例如:scala> val answer = 8 * 3 + 2
可以在后续表达式中使用这些名称

val:常量
var:变量

6、Scala的函数和方法的使用

(1)可以使用Scala的预定义函数

例如:求两个值的最大值
在这里插入图片描述
(2)使用def关键字自定义函数

语法:
在这里插入图片描述
示例:
在这里插入图片描述

7、Scala的条件表达式

Scala的if/else语法结构和Java或C++一样。

不过,在Scala中,if/else是表达式,有值,这个值就是跟在if或else之后的表达式的值。

8、Scala的循环

Scala拥有与Java和C++相同的while和do循环
Scala中,可以使用for和foreach进行迭代

(1)使用for循环案例:
在这里插入图片描述
注意:

<- 表示Scala中的generator,即:提取符
第三种写法是第二种写法的简写

(2)在for循环中,还可以使用yield关键字来产生一个新的集合
在这里插入图片描述
在上面的案例中,我们将list集合中的每个元素转换成了大写,并且使用yield关键字生成了一个新的集合。
(3)使用while循环:注意使用小括号,不是中括号
在这里插入图片描述
(4)使用do … while循环
在这里插入图片描述
(5)使用foreach进行迭代
在这里插入图片描述
注意:在上面的例子中,foreach接收了另一个函数(println)作为值

9、Scala函数的参数

Scala中,有两种函数参数的求值策略

Call By Value:对函数实参求值,且仅求一次
Call By Name:函数实参每次在函数体内被用到时都会求值

在这里插入图片描述

10、Scala的Lazy值(懒值)

当val被申明为lazy时,它的初始化将被推迟,直到我们首次对它取值。
在这里插入图片描述

一个更为复杂一点的例子:读取文件:
在这里插入图片描述

11、异常的处理

Scala异常的工作机制和Java或者C++一样。直接使用throw关键字抛出异常。
在这里插入图片描述

12、Scala中的数组

Scala数组的类型:

定长数组:使用关键字Array
在这里插入图片描述

变长数组:使用关键字ArrayBuffer
在这里插入图片描述
遍历数组:
在这里插入图片描述

Scala数组的常用操作:
在这里插入图片描述

Scala的多维数组:

和Java一样,多维数组是通过数组的数组来实现的。也可以创建不规则的数组,每一行的长度各不相同。
在这里插入图片描述

13、映射

映射就是Map集合,由一个(key,value)组成。
-> 操作符用来创建

例如:

val scores = Map(“Alice” -> 10,”Bob” -> 3,”Cindy” -> 8)

映射的类型分为:不可变Map可变Map
在这里插入图片描述

映射的操作:

获取映射中的值
在这里插入图片描述

更新映射中的值(必须是可变Map)
在这里插入图片描述
迭代映射
在这里插入图片描述

14、元组(Tuple)

元组是不同类型的值的聚集。

例如:

val t = (1, 3.14,"Fred") // 类型为Tuple3[Int, Double,java.lang.String]

这里:Tuple是类型,3是表示元组中有三个元素。

元组的访问和遍历:
在这里插入图片描述

注意:要遍历Tuple中的元素,需要首先生成对应的迭代器不能直接使用for或者foreach

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值