Scala快速入门-1-声明变量

声明变量、常用类型

Posted by Yezhiwei on December 30, 2017

背景

  • 因为Spark是由Scala开发的,所以在开发Spark应用程序之前要对Scala语言学习。虽然Spark也支持Java、Python语言,但是作为一名Java程序猿,还是决定要学习Scala哈。
  • Scala是运行在JVM上一门语言。开发效率非常高、语法丰富简洁,三两行Scala代码能搞定Java要写的一大坨代码。
  • Scala的语法糖太甜~~

Scala特性

面向对象特性

  • Scala是一种纯面向对象的语言,每个值都是对象。

函数式编程

  • Scala也是一种函数式语言,其函数也能当成值来使用。Scala提供了轻量级的语法用以定义匿名函数,支持高阶函数,允许嵌套多层函数,并支持柯里化。Scala的case class及其内置的模式匹配相当于函数式编程语言中常用的代数类型。

  • 可以利用Scala的模式匹配,编写类似正则表达式的代码处理数据。

并发性

  • Scala使用Actor作为其并发模型,Actor是类似线程的实体,通过“邮箱”发收消息。Actor可以复用线程,因此可以在程序中可以使用数百万个Actor,而线程只能创建数千个。在2.10之后的版本中,使用Akka作为其默认Actor实现。

主要内容

  • 声明变量、常用类型
  • 控制结构(条件、循环、for)、函数
  • 常用数组操作
  • 类与对象
  • 继承与特质
  • 集合
  • 模式匹配和样例类

声明变量、常用类型

  • scala代码会被编译成字节码,然后交给Java虚拟机执行。
  • 不强制指定变量的类型,编译器会推断出来。
scala> 8 * 5
res0: Int = 40
  • val定义的值无法改变它的内容。在Scala中,鼓励使用val。
scala> val answer = 8 * 5
answer: Int = 40

scala> answer = 10
<console>:8: error: reassignment to val
       answer = 10
  • 如果要声明其值可变的变量,用var。
scala> var counter = 0
counter: Int = 0

scala> counter = 10
counter: Int = 10
  • 变量或函数的类型总是写在变量或函数名称后面,与Java的习惯不同。
scala> val greeting : String = "Hello"
greeting: String = Hello
  • 不需要使用分号最后,仅当同一行代码中存在多条语句时才需要分号隔开。
  • 常用的数据类型与Java一样,Byte、Char、Short、Int、Long、Float、Double及Boolean,这些都是类。
  • 在基本类型和包装类型之间的转换是Scala编译器的工作。
  • +-*/%等操作符实际上是方法。
  • 对于BigInt和BigDecimal对象,可以以常规的方式使用数学操作符(但在Java中同样的操作要写成x.multiply(x))。
scala> val x : BigInt = 123
x: BigInt = 123

scala> x * x
res1: scala.math.BigInt = 15129
  • 不带参数的Scala方法通常不使用圆括号,一般没有参数且不改变当前对象的方法不带圆括号。

敬请期待下一篇~