1.scala简介
是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台(Java虚拟机)并兼容现有的Java程序。
scala特点
1.Scala是面向对象的
Scala是一种纯粹的面向对象语言,每一个值都是对象。对象的数据类型以及行为由类和特征来描述,类抽象机制的扩展通过两种途径实现,一种是子类继承,另一种是混入机制,这两种途径都能够避免多重继承的问题。
2.Scala是函数式编程的
Scala也是一种函数式语言,其函数可以作为值来使用。Scala提供了轻量级的语法用于定义匿名函数,支持高阶函数,允许嵌套多层函数,并支持柯里化。
3.Scala是静态类型的(即类型一旦定义将无法改变)
Scala具备类型系统,通过编译时检查,保证代码的安全性和一致性。类型系统支持的特性包括泛型类、注释、类型上下限约束、类别和抽象类型作为对象成员、复合类型、引用自己时显示指定类型、视图、多态方法。
4.Scala是可扩展的
在实际开发中,某个特定领域的应用程序开发往往需要特定领域的语言扩展。Scala提供了许多独特的语言机制,它以库的方式能够轻易无缝添加新的语言结构。
5.Scala是可以交互操作的
Scala旨在与流行的Java Runtime Environment(JRE)进行良好的交互操作。Scala用scalac编译器把源文件编译成Java的class文件(即在JVM上运行的字节码)。我们可以从Scala中调用所有的Java类库,也同样可以从Java应用程序中调用Scala的代码。
2.scala 环境搭建
增加Scala插件
在idea的左上角找到【File】->【settings】->【Plugins】,在右边搜索scala插件,点击安装,安装完毕后重启(如果需要)。
创建一个项目,在其中加入以下依赖。
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>2.11.12</version>
</dependency>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-compiler</artifactId>
<version>2.11.12</version>
</dependency>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-reflect</artifactId>
<version>2.11.12</version>
</dependency>
并在build->plugins->plugin下加入编译Scala的插件
<plugin>
<groupId>org.scala-tools</groupId>
<artifactId>maven-scala-plugin</artifactId>
<version>2.15.2</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
第一个scala程序
package com.bigdata.scala
//在class定义的只是普通方法,需要用类的对象才能调用,即new
class Demo01HelloWorld {
def printScala(): Unit = {
println("Hello Scala3!!")
}
}
//在Scala里object里的方法是静态的,声明的是类对象,所以通过object直接运行,直接通过类对象进行调用
object Demo01HelloWorld{
def printScala():Unit={
println("Hello Scala2!!")
}
def main(args: Array[String]): Unit = {
System.out.println("Hello Scala1!!")
Demo01HelloWorld.printScala() //静态方法直接调用
val world = new Demo01HelloWorld()
world.printScala() //类的方法调用
//在scala调用java类的对象,要放在同一个包下
val value = new Demo01HelloWorldJava()
value.printHello()
}
}
在scala中,object中的方法,变量是静态的
class中的变量和方法都是普通变量。
java和scala之间的类可以相互调用。