Scala简介
Posted Maverick_曲流觞
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala简介相关的知识,希望对你有一定的参考价值。
文章目录
1. Scala简介
1.1 概述
Scala(斯嘎拉)这个名字来源于"Scalable Language(可伸缩的语言)", 它是一门基于JVM的多范式编程语言, 通俗的说: **Scala是一种运行在JVM上的函数式的面向对象语言**. 之所以这样命名, 是因为它的设计目标是: 随着用户的需求一起成长. Scala可被广泛应用于各种编程任务, 从编写小型的脚本到构建巨型系统, 它都能胜任. 正因如此, Scala得以提供一些出众的特性, 例如: **它集成了面向对象编程和面向函数式编程的各种特性, 以及更高层的并发模型**.
`基于JVM解释:Scala的运行环境和Java类似, 也是依赖JVM的.`
`多范式解释: Scala支持多种编程风格`
1.2 语言特点
-
Scala是兼容的
兼容Java,可以访问庞大的Java类库,例如:操作mysql、redis、freemarker、activemq等等
-
Scala是精简的
Scala表达能力强,一行代码抵得上多行Java代码,开发速度快
-
Scala是高级的
Scala可以让你的程序保持短小, 清晰, 看起来更简洁, 更优雅
-
Scala是静态类型的
Scala拥有非常先进的静态类型系统, 支持: 类型推断和模式匹配等
-
Scala可以开发大数据应用程序
例如: Spark程序、Flink程序等等...
2. Scala程序和Java程序对比
2.1 程序的执行流程对比
Java程序编译执行流程
Scala程序编译执行流程
2.2 代码对比
**需求: **
定义一个学生类, 属性为: 姓名和年龄, 然后在测试类中创建对象并测试.
Java代码
//定义学生类
public class Student
private String name; //姓名
private int age; //年龄
//空参和全参构造
public Student()
public Student(String name, int age)
this.name = name;
this.age = age;
//getXxx()和setXxx()方法
public String getName()
return name;
public void setName(String name)
this.name = name;
public int getAge()
return age;
public void setAge(int age)
this.age = age;
//测试类
public class StudentDemo
public static void main(String[] args)
Student s1 = new Student("张三", 23); //创建Student类型的对象s1, 并赋值
System.out.println(s1); //打印对象, 查看结果.
Scala代码
case class Student(var name:String, var age:Int) //定义一个Student类
val s1 = Student("张三", 23) //创建Student类型的对象s1, 并赋值
println(s1) //打印对象, 查看结果.
Scala - 01 - Scala简介
Scala简介
Scala(Scalable Language)是一门多范式(multi-paradigm)编程语言,Scala的设计吸收借鉴了许多种编程语言的思想,具备面向对象编程、函数式编程等特性。
- Scala具备强大的并发性,支持函数式编程,可以更好地支持分布式系统;
- Scala语法简洁,能提供优雅的API;
- Scala兼容Java,运行速度快,且能融合到Hadoop生态圈中;
Scala特性
- 交互式编程:提供REPL(Read-Eval-Print Loop,交互式解释器),可以即时查看中间结果并修改
- 可伸展的(Scalable)编程语言:小脚本到大规模系统编程都能胜任
- 纯正的面向对象语言:每个值都是对象,每个操作都是方法调用
- 函数式语言:没有可变变量,不会有内存共享的问题
- 兼容Java,无缝的Java互操作:
- Scala运行于Java平台(JVM,Java 虚拟机)上,,scalac编译器将.scala源文件编译成.class文件(Java字节码),被JVM加载并执行;
- 兼容并可以调用现有的Java类库,Java包可以被import到Scala来直接调用Java方法,访问Java字段,继承Java类和实现Java接口;
- Scala也可以被Java直接调用;
Scala文档
zh-cn
- http://docs.scala-lang.org/zh-cn/
- http://docs.scala-lang.org/zh-cn/cheatsheets/
- http://docs.scala-lang.org/zh-cn/overviews/
Scala基础教程
- 菜鸟教程 - Scala http://www.runoob.com/scala/scala-tutorial.html
- 易百教程 - Scala http://www.yiibai.com/scala/
Scala编码约定
- 区分大小写 - Scala区分大小写
- 类名称 - 所有类名应以大写字母开头。如果包含多个单词,则每个内部单词的第一个字母应该是大写。
- 方法名称 - 所有方法名称应以小写字母开头。如果包含多个单词,则每个内部单词的第一个字母应为大写。
- 程序文件名 - 程序文件的名称必须与对象名称完全匹配,并将.scala作为文件后缀,否则将不会编译。
- def main(args:Array [String]) - Scala程序从main()方法开始,Scala程序的强制性部分。
Scala换行符
- Scala是一种面向行的语言,其语句以分号(;)或换行符终止。
- 语句结尾处的分号(;)通常是可选的。语句在单行上自行显示,则不需要输入。
- 如果在单行上写多个语句,则需要分号。
在命令行下,通常Scala解释器会推断出输入的代码是否结束。
如果还没有结束,解释器就会在下一行显示一个竖线“|”,可以继续输入剩余的代码。
如果想放弃本次输入,可以在“|”后面连续敲入两个回车,结束本次输入。
scala> val test = | | You typed two blank lines. Starting a new command. scala>
Scala注释
- Scala单行和多行注释与Java类似。
- 注释中任何字符都被Scala编译器忽略。
- 多行注释可以嵌套,但需要正确嵌套。
Scala包
使用 package 关键字定义包。
- 一个包是一个命名的代码模块
- 包声明是源文件中的第一个非注释行
- 导入Scala软件包,以便在当前的编译范围内引用
- 可以从单个包导入单个类和对象,也可以导入多个类或对象
使用 import 关键字引用包。
- import语句可以出现在任何地方,而不是只能在文件顶部。
- import的效果从开始延伸到语句块的结束。
import java.awt.Color // 引入Color import java.awt._ // 引入包内所有成员 import java.awt.{Color, Font} //引入包中的几个成员,可以使用selector(选取器) import java.util.{HashMap => JavaHashMap} //重命名成员 import java.util.{HashMap => _, _} //隐藏成员 //引入了util包的所有成员,但是HashMap被隐藏了
注意:默认情况下,Scala 总会引入 java.lang._ 、 scala._ 和 Predef._。
以上是关于Scala简介的主要内容,如果未能解决你的问题,请参考以下文章