Spark大数据分与实践笔记(Scala语言基础-2)

目录

1.2 Scala的基础语法

1.2.1 Scala有两种类型的变量

1.2.2 数据类型

1.2.3 算术和操作符重载

1.2.4 控制结构语句

1.2.5 方法和函数

1.3 Scala的数据结构

1.3.1 数组

1.3.2 元组

1.3.3 集合


1.2 Scala的基础语法

每种编程语言都有一套自己的语法规范,Scala语言也不例外,同样需要遵守一定的语法规范。

声明值和变量

1.2.1 Scala有两种类型的变量

  • 使用关键字var声明的变量,值是可变的;
  • 使用关键字val声明的变量,也叫常量,值是不可变的。

var myVar: String = "Hello" //使用关键字var声明的变量

val age: Int = 10           //使用关键字val声明的变量

有以下几个事项需要注意:

  1. Scala中的变量在声明时必须进行初始化。
  • 使用var声明的变量可以在初始化后再次对变量进行赋值;
  • 使用val声明的常量的值不可被再次赋值。

声明变量时,我们可以不给出变量的类型,因为在初始化的时候,Scala的类型推断机制能够根据变量的初始化的值自动推算出来。

上述声明变量myVar和age的代码,等同于下列代码:

var myVar = "Hello"   //使用关键字var声明的变量

val age = 10           //使用关键字val声明的变量

  1. 使用关键字var或val声明变量时,后面紧跟的变量名称不能和Scala中的保留字重名,而且变量名可以以字母或下划线开头,且变量名是严格区分大小写的。

1.2.2 数据类型

任何一种编程语言都有特定的数据类型,Scala也不例外。与其他语言相比,Scala中的所有值都有一个类型,包括数值和函数。

 

Scala中数据类型的层次结构

从图1-11中可以看出,Any是所有类型的超类型,也称为顶级类型,它包含两个直接子类,具体如下:

  • AnyVal表示值类型,值类型描述的数据是一个不为空的值,而不是一个对象。它预定义了9种类型,分别是Double、Float、Long、Int、Short、Byte、Unit、Char和Boolean。其中,Unit是一种不代表任何意义的值类型,它的作用类似Java中void。
  • AnyRef表示引用类型。可以认为,除值以外,所有类型都继承自AnyRef。

在Scala数据类型层级结构底部,还有两个数据类型,分别是Nothing和Null,具体介绍如下:

  • Nothing所有类型的的子类型,也称为底部类型。它觉的用途是发出终止信号,例如抛出异常、程序退出或无限循环。
  • Null所有引用类型的子类型,它主要用途是与其他JVM语言互操作,几乎不在Scala代码中使用。

1.2.3 算术和操作符重载

Scala中算术操作符(+、-、*、/、%)的作用和Java是一样的,位操作符(&、|、>>、<<)也是一样的。特别强调的是,Scala的这些操作符其实是方法例如,a+b其实是a.+(b)的简写。

 

Scala没有提供操作符++和--。如果我们想实现递增或者递减的效果,可以使用“+=1”或者“-=1”这种方式来实现。

1.2.4 控制结构语句

在Scala中,控制结构语句包括条件分支语句和循环语句

  1. 条件分支语句

//if语句的语法格式如下:

if (布尔表达式1){

        语句块

}

// if……else语句

if (布尔表达式1){

        语句块

}

else {

       语句块

}

// if……else if……else语句

if (布尔表达式1){

        语句块

} else if(布尔表达式2){

         语句块

} else if(布尔表达式3){

       语句块

} else {

       语句块

}

// if……else嵌套语句

if (布尔表达式1){   

       语句块

               if(布尔表达式2){

                      语句块

               }

}else if (布尔表达式3){

        语句块

               else if (布尔表达式4){

                      语句块

                }

}else{

         语句块

}

示例代码如下:

  1. 循环语句

Scala中的for语句和Java中的循环语句在语法上有较大的区别,我们介绍一下Scala中的for循环语句。

for循环语句的语法如下:

for(变量<-表达式/数组/集合){

         循环语句;

}

下面,我们通过从0循环到9,每循环一次则就将该值打印输出进行操作演示。在Scala语法中,可以使用”0 to 9”表示从0到9的范围,范围包含9,示例代码如下:

Dos 下:

IDEA下:

 

//0 1 2 3 4 5 6 7 8 9

Scala在for循环语句中可以通过使用if判断语句过滤一些元素,多个过滤条件用分号分隔开。例如,输出0-9范围中大于5的偶数,示例代码如下:

 Scala中的while循环语句和Java中的完全一样,语法格式如下:

while(布尔表达式){

         循环语句;

}

下面,我们通过打印输出奇数的案例来演示while的使用。假设有一个变量x=1,判断是否小于10,如果是则打印输出,然后再进行+2运算。示例代码如下:

do…while循环语句的语法格式如下:

do{

       循环语句;

}while(布尔表达式)

do…while循环语句与while语句的主要区别是,do…while语句的循环语句至少执行一次,示例代码如下:

 

1.2.5 方法和函数

在Scala中,它和Java一样也是拥有方法和函数。Scala的方法是类的一部分,而函数是一个对象可以赋值给一个变量。Scala中可以使用def语句和val语句定义函数,而定义方法只能使用def语句。下面分别对Scala的方法和函数进行讲解。

  1. 方法

Scala方法的定义格式如下:

def functionName ([参数列表]):[return type]={

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

妉妉师姐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值