/Int/Long/Float/Double Boolean 类型转换基本操作 scala> var d = 1.1 d: Double = 1.1 scala> var e:Float = 1.1 e:Float = 1.1f e: Float = 1.1 scala> val f = 10 f: Int = 10 scala> val g = 10.asInstanceOf[Double] g: Double = 10.0 scala> val h = 10.isInstanceOf[Int] h: Boolean = true 3.Lazy在Scala中的使用 定义的时候不会执行,只有在第一次使用的时候才会执行 : String = <lazy> scala> info res10: String = "hello " scala> 4.Scala 常用IDE IDEA: Eclipse: NetBeans image.png 第一次创建项目需要下载依赖包可能会比较慢 去Plugin里下载Scala的Plugin,下载完成后重启 ?
Scala入门 Scala简介 ps:在最新的薪资调查中,Scala程序员的工资是平均最高的Scala工资。 Scala的官网地址为:http://www.Scala-lang.org/ Scala有几项关键特性表明了它的面向对象的本质。 Scala包中包含了编译器和类库,以BSD许可证发布。 Scala发展历史 联邦理工学院洛桑(EPFL)的Martin Odersky于2001年基于Funnel的工作开始设计Scala。 同时Scala提供的Future,和akka类库,使得异步编程变得非常容易。 基于JVM: Scala会被编译成为jvm bytecode,所以Scala能无缝集成已有的Java类库。 数值类型 Scala的数值类型包含: Byte 1字节 Short 2 Int 4 Long 8 Foat Double 高精度类型 a = 低精度类型 b (同c自动转换) 低精度类型 b = 高精度类型
在scala专栏已经写过两篇博文,为大家详细地介绍了如何在windows上安装scala并与IDEA进行集成。 相信大家可能已经把环境都配置好了,但可能对scala的概念还是一个未知数。所以小菌打算出一个scala快速入门系列,供大家学习使用。 作为快速入门系列第一篇博客,本篇博客先为大家带来scala基本介绍。 ? 简介 scala是运行在JVM上的多范式编程语言,同时支持面向对象和面向函数编程。 早期,scala刚出现的时候,并没有怎么引起重视,随着Spark和 Kafka这样基于scala的大数据框架的兴起,scala逐步进入大数据开发者的眼帘。scala的主要优势是它的表达性。 作为scala快速入门系列的第一篇博文,我也不想整太多的花里胡哨~有更多的疑惑可以自行解决,也可以私信问我。作为scala快速入门系列,力求快狠准,攻克大家的疑点,难点。
前言 学习Scala之前我们先看一个简单的例子 Java List<Product> products = new ArrayList<Product>(); for (Order order : orders 甚至可以更简洁: def products = orders.flatMap(_.products) 这样我们就可以看出Scala可以写更少的代码来实现同样的功能。 下载 https://www.scala-lang.org/download/2.13.8.html 或者 链接:https://pan.baidu.com/s/1r8qjJ2fE4yqBF82YBIqvHg 提取码:psvm 选择MSI包 注意安装路径不能有空格否则报错 此时不应有 \scala\bin.. 测试是否可用 scala -version IDEA安装插件 安装后重启IDEA 创建项目 项目上右键 添加Scala SDK 添加我们的测试类 代码如下 package cn.psvmc
由于做大数据开发,使用最多的语言就是scala和python,java。 刚开始由于spark是scala开发的,就去学习了scala,然后看spark的源码。 后面就是基于spark-core写原生scala的应用。总体来时, scala使用是真的丝滑和顺手。尤其函数式编程。我开发flink也是使用scala。目前很少使用Java了。 我下面就系统介绍一下,scala的内容学习, 我自己也做一个系统的学习补充吧。 这篇主要从scala入门介绍。 Scala 是一门多范式 (multi-paradigm) 的编程语言,Scala支持面向对象和函数式编程 Scala源代码(.scala)会被编译成Java字节码(.class),然后运行于JVM之上 ,就可以快速的掌握Scala这门语言 scala像python一样,一切皆对象。
Scala 与 Java Scala 与 Java 关系密切,体现在下面几点: Scala 运行在 JVM 上, Scala 可以与企业现有 Java 应用同时运行 Scala 可以直接使用 Java 类库, 开发人员可以利用现有框架以及代码 Scala 与 Java 都是镜台语言 Scala 语法和Java 语法相近, 开发人员可以迅速掌握 Scala Scala 既支持面向对象范型也支持面向对象范型 ,开发人员可以逐步运用函数式编程思想 Scala 诞生 了解了 Scala 的特性之后,我们追本溯源, 了解下 Scala 的诞生起源。 Wattzon已经公开宣称,其整个平台都已经是基于Scala基础设施编写的。 瑞银集团把Scala用于一般产品中。 Coursera把Scala作为服务器语言使用。 Kafka 核心也是Scala 实现的。 函数式语言 面向对象的特性得以使应用平滑的从 Java 迁移到 Scala,但是Scala惹眼的是其函数式编程的特性。
本篇博客,作为scala快速入门系列的第二篇博客,为大家带来的是关于scala解释器的初步使用! ? 后续我们会使用scala解释器来学习scala基本语法,scala解释器像Linux命令一样,执行一条代码,马上就可以让我们看到执行结果,用来测试比较方便。 我们将要学习: 启动scala解释器 在scala解释器中执行scala代码 退出scala解释器 ---- 启动scala解释器 要启动scala解释器,只需要以下几步: 按住 windows键 + r 输入 scala 即可 ? 执行scala代码 在scala的命令提示窗输入 println("hello , world"),回车执行。 ?
Scala数组 1. Int = 3 scala> b.min res4: Int = 1 scala> b.mkString(",") res5: String = 1,2,3 scala> b.mkString(" [Int] = ArrayBuffer() scala> scala> d+=1 // 添加元素 res15: d.type = ArrayBuffer(1) scala> d+=2 res16: scala> d++=Array(6,7,8,9) // 添加数组 res18: d.type = ArrayBuffer(1, 2, 3, 4, 5, 6, 7, 8, 9) scala> d.insert 7 scala> scala> for(i <- 0 until d.length){ // 遍历数组-法2 | print(d(i)+" ") | } 4 5 6 7 scala> scala>
Scala入门 Scala简介 ps:在最新的薪资调查中,Scala程序员的工资是平均最高的Scala工资。 Scala的官网地址为:http://www.Scala-lang.org/ Scala有几项关键特性表明了它的面向对象的本质。 Scala包中包含了编译器和类库,以BSD许可证发布。 Scala发展历史 联邦理工学院洛桑(EPFL)的Martin Odersky于2001年基于Funnel的工作开始设计Scala。 同时Scala提供的Future,和akka类库,使得异步编程变得非常容易。 基于JVM: Scala会被编译成为jvm bytecode,所以Scala能无缝集成已有的Java类库。 数值类型 Scala的数值类型包含: Byte 1字节 Short 2 Int 4 Long 8 Foat Double 高精度类型 a = 低精度类型 b (同c自动转换) 低精度类型 b =
1.初识Scala 1.1 Scala概述 image.png Scala 是整合了面向对象和函数式边恒的高级编程语言。 1.2 学习Scala的意义 钱多 做东西:Spark,Kafka,Flink 生态系统 代码优雅 开发速度快 融合到生态圈 1.3 Scala安装 1. 安装Java8 2. 验证 ➜ scala-2.11.8 scala Welcome to Scala 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_171). scala> 1.3 Scala使用入门 scala> 1+3 res1: Int = 4 // 自动识别类型 scala> res1 * 3 //自动给返回结果赋值给变量 res2: Int = 12 scala> res0 * res1 res3: Int = 16 scala> println("hello word") hello word scala> 1.4 Scala和Java版本Hello
Scala 中提供了基于是否匹配某个条件来执行相应动作的模式匹配,这很类似其他语言的switch-case语句。 我们以一个划分学生期末成绩等级的例子来解释 Scala 模式匹配的用法: package com.byron4j.scala.basic /** * Scala 模式匹配的用法 */ object
在Scala中函数是“一等公民”,所以允许定义高阶函数。这里的术语可能有点让人困惑,我们约定,使用函数值作为参数,或者返回值为函数值的“函数”和“方法”,均称之为“高阶函数”。 最常见的一个例子是Scala集合类(collections)的高阶函数map val salaries = Seq(20000, 70000, 40000) val doubleSalary = (x: 对于上述代码,一种更惯用的写法为: val salaries = Seq(20000, 70000, 40000) val newSalaries = salaries.map(_ * 2) 既然Scala 编译器已经知道了参数的类型(一个单独的Int),你可以只给出函数的右半部分,不过需要使用_代替参数名(在上一个例子中是x) 强制转换方法为函数 你同样可以传入一个对象方法作为高阶函数的参数,这是因为Scala
Scala面向对象 1.面向对象概述 封装:属性方法封装到类中 继承:父类和子类直接的关系 多态:***** 父类引用指向子类对象 精髓所在,开发框架的基石 2.类的定义和使用 package com.gwf.scala.course04 ..." } def watchFootball(teamName: String)={ println(name+"is watching match of "+teamName) } } } scala val i:Int = _ ^ scala> var i:Int = _ i: Int = 0 scala> var s:String = _ s: String = null scala> 3 object * 那么就称称这个个object是class的伴生対象, class是object的伴生类,两者相辅相成 */ class ApplyTest{ } object ApplyTest{ } 8. Apply 方法 package com.gwf.scala.course04 object ApplyApp { def main(args: Array[String]): Unit = { for
Actor Scala 的 Actor 类似于 Java 中的多线程编程。但是不同的是,Scala 的 Actor提供的模型与多线程有所不同。 Scala 的 Actor 尽可能地避免锁和共享状态,从而避免多线程并发时出现资源争用的情况,进而提升多线程编程的性能。 Akka 也实现了类似 Scala Actor的模型,其核心概念同样也是 Actor。 "Li" 收发 case class 类型的消息 Scala 的 Actor 模型与 Java 的多线程模型之间,很大的一个区别就是,Scala Actor 天然支持线程之间的精准通信;即一个 actor 在 Scala 中,通常建议使用样例类,即 case class 来作为消息进行发送。然后在 actor 接收消息之后,可以使用 Scala 强大的模式匹配功能来进行不同消息的处理。
一. scala的前世今生 ? 联邦理工学院的马丁·奥德斯基(Martin Odersky)于2001年开始设计Scala。 jdk8.0 的类型推断,Lambda表达式就是从Scala引入的特性。 二. Scala和Java关系 ? 一般来说,学Scala的人,都会Java,而Scala是基于Java的,因此我们需要将Scala和Java以及JVM 之间的关系搞清楚,否则学习Scala你会蒙圈。 1)Scala是一门多范式的编程语言,Scala支持面向对象和函数式编程。 早期,scala刚出现的时候,并没有怎么引起重视,随着Spark和 Kafka这样基于scala的大数据框架的兴起,scala逐步进入大数据开发者的眼帘。scala的主要优势是它的表达性。
第二步安装 Scala: 下载 Scala 登录 http://www.scala-lang.org/download/ 选择下载最新的 Scala 版本 解压、设置 环境变量(没有经验的参考http 使用 scala -version 命令查看当前 Scala 的版本; 使用 scala 命令则直接进入 Scala 解释执行器中: C:\Users\Administrator>scala Welcome scala> 我们可以输入简单的一条 Scala 语句输出”Hello,Scala!” scala> println("Hello,Scala!") Hello,Scala! scala> 至此,Windows 安装Scala 环境完成。 Linux中Scala运行环境的安装配置 Linux 下安装Scala环境步骤和Windows下类似,也是需要先安装JDK、再安装Scala。 可以自行查看网上相关资料安装。
val 常量 Scala中,使用 val 关键字修饰常量,常量一旦赋值,则后续不允许再次进行赋值操作。 var 变量 Scala 中可以使用 var 来修饰变量。 package com.byron4j.scala /** * * 展示Scala 变量的方式 * val: 相当于java中的final常量,一旦给val变量赋值,则val变量不可以再做修改 val a = Array(1, 2) for( key <- a ){ println("遍历输出数组值:" + key); } Scala 是一门函数式编程语言,在Scala 中大量使用了 val 常量的定义, 在 Scala 中应尽量减少 var 的使用。
本篇作为scala快速入门系列的第十二篇博客,为大家带来的关于元组的相关内容。 ? 元组 元组可以用来包含一组不同类型的值。例如:姓名,年龄,性别,出生年月。
本篇作为scala快速入门系列的第十篇博客,小菌为大家带来的是关于函数的相关内容。 ? 函数 scala支持函数式编程,将来编写Spark/Flink程序中,会大量经常使用到函数。 ---- 定义函数 语法 ? [! 看到这里大家一定觉得这跟上一篇讲到的scala的方法基本没什么区别。别急,接下来就大家进行讲解。 ?
本篇作为scala快速入门系列的第十四篇博客,为大家带来的是关于集(Set)的相关内容。 ? Set Set(集)是代表没有重复元素的集合。 Set具备以下性质: 元素不重复 不保证插入顺序 scala中的集也分为2种,一种是不可变集,另一种是可变集。 拼接两个集,生成一个Set( ++ ) 拼接集和列表,生成一个Set( ++ ) 典例 创建一个集,包含以下元素:1,1,2,3,4,5 获取集的大小 遍历集,打印每个元素 删除元素1 拼接另一个集(6,7,8) 拼接一个列表(6,7,8,9) 参考代码 ? 要使用可变集,必须要手动导入: import scala.collection.mutable.Set 示例 定义一个可变集,包含以下元素: 1,2,3, 4 添加元素5到可变集中 从可变集中移除元素1