Spark学习(3)——scala基础语法

scala概述

scala是一门多范式编程语言,集成了面向对象编程和函数式编程等多种特性。
scala运行在虚拟机上,并兼容现有的Java程序。     
Scala源代码被编译成java字节码,所以运行在JVM上,并可以调用现有的Java类库

scala解释器的使用

1,REPL:Read(取值) ->Evaluation(求值)->Print(打印)->Loop(循环);
Scala解释器也被称为REPL,会快速编译scala代码为字节码,然后交给JVM来执行
2,计算表达式:在scala命令行内,键入scala代码,解释器会直接返回给结果给你,如果你没有指定变量存储这个值,那么值默认的名称是res,而且会显示结果的数据类型,例如:int、Double、java.lang.String等。
例如输入:1+1
运行结果:

3,内置变量:在后面可以继续使用res这个变量,以及它存放的值。
    例如:2.0*res0
运行结果:

例如:”HI” + res0

运行结果:

4,自动补全:在scala命令行内,可以使用tab键进行自动补全
    例如:输入res2.to,按tab键,解释器会显示如下选项

因为此时无法判断你要选择的是哪一个,所以都列了出来,如果输入res2.toU,按下tab键会自动补全toUpperCase

声明变量

声明val变量:可以声明val变量来存放表达式的计算结果

例如val  result =1+1

后续这些常量可以继续使用,例如:2*result

但是常量声明后是无法改变,例如,result =1,会返回如下错误

声明var变量:如果声明值可以改变的引用,可以使用var声明,例如var  myRes =1,myRes=2,

运行结果:

但是在scala程序中建议使用val,也就是常量,因此类似于Spark大型复杂系统中,需要大量的网络传输数据,如果使用var,可能会被错误的更改

指定类型:无论声明的是val变量还是var变量,都可以手动的指定其类型,如果不指定的化,scala会自动根据值,进行类型的指定。

  例如 val name: String =null

声明多个变量:可以将多个变量放到一起进行声明

例如:val name1,name2  : String =null

数据类型与操作符

数据类型

描述

Byte

8位有符号补码整数。数值区间为 -128 到 127

Short

16位有符号补码整数。数值区间为 -32768 到 32767

Int

32位有符号补码整数。数值区间为 -2147483648 到 2147483647

Long

64位有符号补码整数。数值区间为 -9223372036854775808 到 9223372036854775807

Float

32位IEEE754单精度浮点数

Double

64位IEEE754单精度浮点数

Char

16位无符号Unicode字符, 区间值为 U+0000 到 U+FFFF

String

字符序列

Boolean

true或false

Unit

表示无值,和其他语言中void等同。用作不返回任何结果的方法的结果类型。Unit只有一个实例值,写成()。

Null

null 或空引用

Nothing

Nothing类型在Scala的类层级的最低端;它是任何其他类型的子类型。

Any

Any是所有其他类的超类

AnyRef

AnyRef类是Scala里所有引用类(reference class)的基类

乍一看与Java的基本数据类型的包装类相同,但是scala没有基本数据类型和包装类型的概念,统一都是类,scala自己会负责基本数据类型和引用类型的转换操作。

使用以上类型,直接就可以调用大量的函数,例如:1 toString ,1 to(10)

典型的加强版类型,scala使用很多加强类给数据类型增加了上百种增强的功能或函数,例如:String 类通过StringOps类增强了大量函数,”Hello”.intersect(“World”),

运行结果

Scala运算符与Java一样,不过scala运算符实际是一种方法, Scala中没有提供++,--操作符,只提供+=和-=

例如:res=1,res++是错误的,必须用res+=1

函数调用与apply函数

函数调用方式:在scala中,函数调用也很简单

例如:import  scala.math_      ,sqrt(2),pow(2,4),min(3,Pi)

不同的一点是,scala在调用函数时,如果函数不需要传递参数,scala是可以省略括号的,例如 “Hello World”.distinct

apply  函数:scala中apply函数是非常特殊的一种函数,在Scala中的object中,可以声明apply函数,而使用“类名()”的方式,就是“类名.apply()”的一种缩写,通常使用这种方式来构造类的对象,而不是“new 类名()”的方式。例如:”Hello World”(6),因为在StringOps类中,有 def  apply(n: int) :Char的函数定义,所以”Hello World”(6),实际上就是”Hello World”.apply(6)的缩写  ,例如 Array(1,2,3,4,5) 实际上是用 Array的object的appay函数来创建类的实例,也就是一个数组

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值