Scala(Scala Language的简称)语言是一种可以运行于JVM和.Net平台之上的通用编程语言,既可用于大规模应用程序开发,也可用于脚本编程。express
Scala由Martin Odersk于2001开发,2004年开始程序运行在JVM与.Net平台之上,因为其简洁、优雅、类型安全的编程模式而受到关注。 编程
在Scala的建立之初,并无怎么引发重视。随着Apache Spark和Apache Kafka这样基于Scala的大数据框架的崛起,Scala逐步映入大数据从业者的眼帘。Scala的拥护者们认为Scala的主要优点是速度和它的表达性。安全
目前使用scala的做为支撑公司开发语言的包括Foursquare和Twitter。2009年Twitter把大部分后台系统的开发语言从Ruby换成了Scala。闭包
scala是一种纯面向对象的语言,每一个值都是对象。对象的数据类型以及行为由类和特质描述。并发
Scala是一种函数式语言,其函数也能当成值来使用。Scala提供了轻量级的语法用以定义匿名函数,支持高阶函数,容许嵌套多层函数,并支持柯里化。框架
Scala具有类型系统,经过编译时检查,保证代码的安全性和一致性。类型系统具体支持如下特性:编程语言
Scala提供了许多独特的语言机制,能够以库的形式轻易无缝添加新的语言结构:ide
Scala使用Actor做为其并发模型,Actor是相似线程的实体,经过邮箱发收消息。函数式编程
Actor能够复用线程,所以能够在程序中可使用数百万个Actor,而线程只能建立数千个。在2.10以后的版本中,使用Akka做为其默认Actor实现。函数
交互式编程不须要建立脚本文件,能够经过如下命令调用。
$ scala Welcome to Scala version 2.11.7 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_31). Type in expressions to have them evaluated. Type :help for more information. scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! scala>
建立一个 HelloWorld.scala 的文件来执行代码
object HelloWorld { /* 这是个人第一个 Scala 程序 * 如下程序将输出'Hello World!' */ def main(args: Array[String]) { println("Hello, world!") // 输出 Hello World } }
接下来咱们使用 scalac 命令编译它:
$ scalac HelloWorld.scala $ ls HelloWorld$.class HelloWorld.scala HelloWorld.class
使用如下命令来执行程序
$ scala HelloWorld Hello, world!
区分大小写:Scala是大小写敏感的,这意味着标识Hello 和 hello在Scala中会有不一样的含义。
类名:对于全部的类名的第一个字母要大写。若是须要使用几个单词来构成一个类的名称,每一个单词的第一个字母要大写。示例:class MyFirstScalaClass
方法名称:全部的方法名称的第一个字母用小写。若是若干单词被用于构成方法的名称,则每一个单词的第一个字母应大写。示例:def myMethodName()
Scala 相似 Java 支持单行和多行注释。多行注释能够嵌套,但必须正确嵌套,一个注释开始符号对应一个结束符号。注释在 Scala 编译中会被忽略,实例以下:
object HelloWorld { /* 这是一个 Scala 程序 * 这是一行注释 * 这里演示了多行注释 */ def main(args: Array[String]) { // 输出 Hello World // 这是一个单行注释 println("Hello, world!") } }
Scala中,使用关键词"var"声明变量,使用关键词 "val"声明常量。
val myVar : String = "Foo" var myVar : String = "Too"
在 Scala 中声明变量和常量不必定要指明数据类型,在没有指明数据类型的状况下,其数据类型是经过变量或常量的初始值推断出来的。
因此,若是在没有指明数据类型的状况下声明变量或常量必需要给出其初始值,不然将会报错。
var myVar = 10; val myVal = "Hello, Scala!";
声明多个变量
// xmax, ymax都声明为100 val xmax, ymax = 100