Scala的介绍

一、什么是Scala

在这里插入图片描述

1、Scala特点

  • Scala是一种将面向对象和函数式编程结合在一起的高级语言,旨在以简洁、优雅和类型安全的方式表达通用编程模式。Scala功能强大,不仅可以编写简单脚本,还可以构建大型系统。

2、Scala与java关系

  • Scala运行于Java平台,Scala程序会通过JVM被编译成class字节码文件,然后在操作系统上运行。其运行时候的性能通常与Jva程序不分上下,并且Scala代码可以调用Java方法、继承Java类、实现Java接口等,几乎所有Scala代码都大量使用了Java类库。

3、Scala与Spark

  • 由于Spark主要是由Scala语言编写的,为了后续更好的学习Spark以及使用Scala编写Spark应用程序,需要首先学习使用Scala语言。

二、安装Scala

版本要求
由于Scala运行于Java平台,因此安装Scala之前需要确保系统安装了JDK。此使用的Scala版本为2.12.7,要求JDK版本为1.8。

(一)、Windows安装

1. 下载Scala

到Scala官网https:/www.scala-lang.org/download/下载Windows安装包 scala-2.12.7.msi

2. 配置环境变量

变量名:SCALA HOME
变量值:C:\Program Files(x86)\scala
变量名:Path
变量值:%SCALA HOME%\bin

3. 测试

CMD中执行scala-version命令
在这里插入图片描述

(二)、CentOS7安装Scala

1.下载Scala

到Scala官网nttps:/www.scala-lang.org/download/下载Linux安装包 scala-2.12.7.tgz
解压到指定目录:
tar -zxvf scala-2.12.7.tgz -C /opt/modules/

2. 配置环境变量

export SCALA HOME=/opt/modules/scala-2.12.7/
export PATH=SPATH:$SCALA HOME/bin

3. 测试

CMD中执行scala-version命令

三、Scala基础

(一)、变量声明

Scala中变量的声明使用关键字val和var。

声明一个val字符串变量str:

scala>val str=“hello scala”
str:String hello scala

声明变量时指定数据类型:

scala>val str:String=“hello scala”
str:String hello scala

将多个变量放在一起进行声明:

scala>val x,y=“hello scala”
x:String hello scala
y:String hello scala

Scala变量的声明,需要注意的地方总结如下:

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

(二)、数据类型

在这里插入图片描述

1. 数组

下面的例子定义了一个类型为List[Any]的变量ist,Iist中包括字符串、整数、字符、布尔值和函数,由于这些元素都属于对象Ay的实例,因此可以将它们添加到ist中。
val list:List[Any]=List(
“a string”,
732,//an integer
‘c’,//a character
true,//a boolean value
()=>“an anonymous function returning a string”
)
在这里插入图片描述

2. 数据类型的转换

在这里插入图片描述

(三)、表达式

1、条件表达式

条件表达式主要是含有if/else的语句块:
scala> val i=1
i: Int = 1
scala> val result=if(i>0) 100 else -100
result: Int = 100
也可以在一个表达式中进行多次判断:
scala> val result=if(i>0) 100 else if(i==0) 50 else 10
result: Int = 100

2、块表达式

块表达式为包含在符号{}中的语句块:
scala> val result={
| val a=10
| val b=10
| a+b
| }
result: Int = 20

Scala中的返回值是最后一条语句的执行结果,而不需要像Java一样单独写return关键字。如果表达式中没有执行结果,则返回一个Unit对象,类似Java中的void:
scala> val result={
| val a=10
| }
result: Unit = ()

(四)、循环

1、for循环

for循环的语法:
for(变量<-集合或数组){
方法体
}

例如,循环从1到5输出变量i的值:
scala> for(i<- 1 to 5) println(i)
若不想包括5,可使用关键字until:
scala> for(i<- 1 until 5) println(i)
将字符串“hello”中的字符循环输出:
scala> val str=“hello”
scala> for(i<-0 until str.length) println(str(i))
将字符串看做一个由多个字符组成的集合,简化写法:
scala> for(i<-str) println(i)

2、while循环

while循环的语法:
while(条件)
{
循环体
}

例如:
scala> var i=1
i: Int = 1

scala> while(i<5){
| i=i+1
| println(i)
| }

3、do while循环

do while 循环与while循环类似,但是do while循环会确保至少执行一次循环。语法:
do {
循环体
} while(条件)

例如:
scala> do{
| i=i+1
| println(i)
| }while(i<5)

四、集合

Scala集合分为可变集合和不可变集合。可变集合可以对其中的元素进行修改、添加、移除;而不可变集合,永远不会改变,但是仍然可以模拟添加、移除或更新操作。这些操作都会返回一个新的集合,原集合的内容不发生改变。

五、Map映射

Scala中的Map也分可变的Map和不可变的Map,默认为不可变Map。

1、不可变Map

创建一个不可变Map:
val mp = Map(
“key1” -> “value1”,
“key2” -> “value2”,
“key3” -> “value3”
)
也可以使用以下写法:
val mp = Map(
(“key1” , “value1”),
(“key2” , “value2”),
(“key3” , “value3”)
)
循环输出上述Map中的键值数据:
for((k,v)<-mp){
println(k+“:”+v)
}

2、可变Map

创建可变Map需要引入类scala.collection.mutable.Map,创建方式与不可变Map相同。访问Map中key1的值,代码:
val mp = Map(
(“key1” , “value1”),
(“key2” , “value2”)
)
println(mp(“key1”))
修改键key1的值为value2,代码:
mp(“key1”)=“value2”
上述代码当key1存在时执行修改操作,若key1不存在则执行添加操作。
向Map中添加元素也可以使用+=符号:
mp+=(“key3” -> “value3”)

mp+=((“key3”,“value3”))
相对应的,从Map中删除一个元素可以使用-=符号:
mp-=“key3”

六、数组

Scala中的数组分为定长数组和变长数组,定长数组初始化后不可对数组长度进行修改,而变长数组则可以修改。

1、定长数组

定义数组的同时可以初始化数据:
val arr=Array(1,2,3)//自动推断数组类型
或者
val arr=ArrayInt//手动指定数据类型
也可以定义时指定数组长度,稍后对其添加数据:
val arr=new ArrayInt
arr(0)=1
arr(1)=2
arr(2)=3
可以使用for循环对数组进行遍历:
val arr=Array(1,2,3)
for(i<-arr){
println(i)
}
Scala对数组提供了很多常用的方法,使用起来非常方便:
val arr=Array(1,2,3)
//求数组中所有数值的和
val arrSum=arr.sum
//求数组中的最大值
val arrmAx=arr.max
//求数组中的最小值
val arrMin=arr.min
//对数组进行升序排序
val arrSorted=arr.sorted
//对数组进行降序排序
val arrReverse=arr.sorted.reverse

2、可变List

可变List需要使用scala.collection.mutable.ListBuffer类。
例如,创建一个可变List并初始化数据:
val listBuffer= ListBuffer(1, 2, 3)
或者创建时不初始化数据而是通过后面添加元素:
val listBuffer= new ListBufferInt
listBuffer+=1
listBuffer+=2
listBuffer+=3
也可以将两个List进行合并:
val listBuffer= ListBuffer(1, 2, 3)
val listBuffer3= ListBuffer(4, 5, 6)
println(listBuffer++listBuffer3)
输出结果:
ListBuffer(1, 2, 3, 4, 5, 6)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值