Scala 编程
Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。Scala 源代码被编译成Java字节码,所以它可以运行于JVM之上,并可以调用现有的Java类库。
hei bai ying
这个作者很懒,什么都没留下…
展开
-
Scala 系列(一)—— Scala简介及开发环境配置
一、Scala简介1.1 概念Scala全称为Scalable Language,即“可伸缩的语言”,之所以这样命名,是因为它的设计目标是希望伴随着用户的需求一起成长。Scala是一门综合了面向对象和函数式编程概念的静态类型的编程语言,它运行在标准的Java平台上,可以与所有的Java类库无缝协作。1.2 特点1. Scala是面向对象的Scala是一种面向对象的语言,每个值都是对象,每...原创 2019-06-08 08:55:00 · 346 阅读 · 0 评论 -
Scala 系列(二)—— 基本数据类型和运算符
一、数据类型1.1 类型支持Scala 拥有下表所示的数据类型,其中Byte、Short、Int、Long和Char类型统称为整数类型,整数类型加上Float和Double统称为数值类型。Scala数值类型的取值范围和Java对应类型的取值范围相同。数据类型描述Byte8位有符号补码整数。数值区间为 -128 到 127Short16位有符号补码整数。数值区间为...原创 2019-06-08 08:55:04 · 639 阅读 · 0 评论 -
Scala 系列(三)—— 流程控制语句
一、条件表达式ifScala中的if/else语法结构与Java中的一样,唯一不同的是,Scala中的if表达式是有返回值的。object ScalaApp extends App { val x = "scala" val result = if (x.length == 5) "true" else "false" print(result) }在Java中,每行语...原创 2019-06-08 08:55:08 · 191 阅读 · 0 评论 -
Scala 系列(四)—— 数组Array
一、定长数组在Scala中,如果你需要一个长度不变的数组,可以使用Array。但需要注意以下两点:在Scala中使用(index)而不是[index]来访问数组中的元素,因为访问元素,对于Scala来说是方法调用,(index)相当于执行了.apply(index)方法。Scala中的数组与Java中的是等价的,Array[Int]()在虚拟机层面就等价于Java的int[]。// 1...原创 2019-06-08 08:55:12 · 926 阅读 · 0 评论 -
Scala 系列(五)—— 集合类型综述
一、集合简介Scala中拥有多种集合类型,主要分为可变的和不可变的集合两大类:可变集合: 可以被修改。即可以更改,添加,删除集合中的元素;不可变集合类:不能被修改。对集合执行更改,添加或删除操作都会返回一个新的集合,而不是修改原来的集合。二、集合结构Scala中的大部分集合类都存在三类变体,分别位于scala.collection, scala.collection.immutabl...原创 2019-06-08 08:55:16 · 281 阅读 · 0 评论 -
Scala 系列(六)—— 常用集合类型之 List & Set
一、List字面量List是Scala中非常重要的一个数据结构,其与Array(数组)非常类似,但是List是不可变的,和Java中的List一样,其底层实现是链表。scala> val list = List("hadoop", "spark", "storm")list: List[String] = List(hadoop, spark, storm)// List是不可变...原创 2019-06-08 08:55:21 · 929 阅读 · 0 评论 -
Scala 系列(七)—— 常用集合类型之 Map & Tuple
一、映射(Map)1.1 构造Map// 初始化一个空mapval scores01 = new HashMap[String, Int]// 从指定的值初始化Map(方式一)val scores02 = Map("hadoop" -> 10, "spark" -> 20, "storm" -> 30)// 从指定的值初始化Map(方式二)val scores0...原创 2019-06-08 08:55:25 · 259 阅读 · 0 评论 -
Scala 系列(八)—— 类和对象
一、初识类和对象Scala的类与Java的类具有非常多的相似性,示例如下:// 1. 在scala中,类不需要用public声明,所有的类都具有公共的可见性class Person { // 2. 声明私有变量,用var修饰的变量默认拥有getter/setter属性 private var age = 0 // 3.如果声明的变量不需要进行初始赋值,此时Scala就无法进行...原创 2019-06-08 08:55:48 · 205 阅读 · 0 评论 -
Scala 系列(九)—— 继承和特质
一、继承1.1 Scala中的继承结构Scala中继承关系如下图:Any是整个继承关系的根节点;AnyRef包含Scala Classes和Java Classes,等价于Java中的java.lang.Object;AnyVal是所有值类型的一个标记;Null是所有引用类型的子类型,唯一实例是null,可以将null赋值给除了值类型外的所有类型的变量;Nothing是所有类型的子...原创 2019-06-08 08:55:53 · 291 阅读 · 0 评论 -
Scala 系列(十)—— 函数 & 闭包 & 柯里化
一、函数1.1 函数与方法Scala中函数与方法的区别非常小,如果函数作为某个对象的成员,这样的函数被称为方法,否则就是一个正常的函数。// 定义方法def multi1(x:Int) = {x * x}// 定义函数val multi2 = (x: Int) => {x * x}println(multi1(3)) //输出 9println(multi2(3)) //输...原创 2019-06-08 08:55:56 · 376 阅读 · 0 评论 -
Scala 系列(十一)—— 模式匹配
一、模式匹配Scala支持模式匹配机制,可以代替swith语句、执行类型检查、以及支持析构表达式等。1.1 更好的swithScala不支持swith,可以使用模式匹配match...case语法代替。但是match语句与Java中的switch有以下三点不同:Scala中的case语句支持任何类型;而Java中case语句仅支持整型、枚举和字符串常量;Scala中每个分支语句后面不需...原创 2019-06-08 08:56:00 · 181 阅读 · 0 评论 -
Scala 系列(十二)—— 类型参数
一、泛型Scala支持类型参数化,使得我们能够编写泛型程序。1.1 泛型类Java中使用<>符号来包含定义的类型参数,Scala则使用[]。class Pair[T, S](val first: T, val second: S) { override def toString: String = first + ":" + second}object ScalaAp...原创 2019-06-08 08:56:04 · 319 阅读 · 0 评论 -
Scala 系列(十三)—— 隐式转换和隐式参数
一、隐式转换1.1 使用隐式转换隐式转换指的是以implicit关键字声明带有单个参数的转换函数,它将值从一种类型转换为另一种类型,以便使用之前类型所没有的功能。示例如下:// 普通人class Person(val name: String)// 雷神class Thor(val name: String) { // 正常情况下只有雷神才能举起雷神之锤 def hammer...原创 2019-06-08 08:56:08 · 228 阅读 · 0 评论