01-47-Scala-入门基础

51 篇文章 1 订阅
3 篇文章 0 订阅

01-Scala-入门:

spark大数据重要内容,是scalc编写的

Scala和Java及JVM关系图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HzMHVMWC-1670683662247)(png/image-20210909132338651.png)]

Scala的特点:

(1)运行在 JVM 和 JavaScript 之上的语言
Scala运行在JVM上,兼容现有的Java程序,集成面向对象编程和函数式编程的各种特性,轻松实现和丰富的 Java 类库互联互通。Scala 不仅利用了 JVM 的高性能以及最优化性,Java 丰富的工具及类库生态系统也为其所用。不过 Scala 并不是只能运行在 JVM 之上。

(2)静态类型
在 Scala 语言中,静态类型(static typing)是构建健壮应用系统的一个工具。Scala 修正了 Java 类型系统中的一些缺陷,此外通过类型推演(type inference)也免除了大量的冗余代码。

(3)混合式编程范式——面向对象编程
Scala 完全支持面向对象编程(OOP)。Scala 引入特征(trait)改进了 Java 的对象模型。trait 能通过使用混合结构(mixin composition)简洁地实现新的类型。在 Scala 中,一切都是对象,即使是数值类型。

(4)混合式编程范式——函数式编程
Scala 完全支持函数式编程(FP),函数式编程已经被视为解决并发、大数据以及代码正确性问题的最佳工具。使用不可变值、被视为一等公民的函数、无副作用的函数、高阶函数以及函数集合,有助于编写出简洁、强大而又正确的代码。Scala提供了轻量级的语法用以定义匿名函数,支持高阶函数,允许嵌套多层函数,并支持柯里化。Scala的case class及其内置的模式匹配相当于函数式编程语言中常用的代数类型。

(5)复杂的类型系统
Scala 对 Java 类型系统进行了扩展,提供了更灵活的泛型以及一些有助于提高代码正确性的改进。通过使用类型推演,Scala 编写的代码能够和动态类型语言编写的代码一样精简。

(6)简洁、优雅、灵活的语法
使用 Scala 之后,Java 中冗长的表达式不见了,取而代之的是简洁的 Scala 方言。Scala提供了一些工具,这些工具可用于构建领域特定语言(DSL),以及对用户友好的 API接口。

比如:【三元运算符, ++ --】

(7)可扩展的架构
使用 Scala,能编写出简短的解释性脚本,并将其粘合成大型的分布式应用。

Scala 环境搭建

1)安装步骤

(1)首先确保 JDK1.8 安装成功

(2)下载对应的 Scala 安装文件 scala-2.12.11.zip

(3)解压 scala-2.12.11.zip,我这里解压到 D:\Tools

(4)配置 Scala 的环境变量

SCALA_HOME:D:\Software\ALL\scala-2.12.11

path添加%SCALA_HOME%\bin;

注意 1:解压路径不能有任何中文路径,最好不要有空格。

注意 2:环境变量要大写 SCALA_HOME

测试:
在这里插入图片描述

编写HelloScala.scala

object HelloScala{
	def main(args: Array[String]): Unit={
		println("hello aaa scala")
	}
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ifv7PKE0-1670683662249)(png/image-20210909133407244.png)]

反编译scala,了解
import scala.reflect.ScalaSignature;

@ScalaSignature(bytes="\006\001%:Q\001B.......")
public final class HelloScala
{
  public static void main(String[] paramArrayOfString)
  {
    HelloScala..MODULE$.main(paramArrayOfString);
  }
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e55eRfOE-1670683662250)(png/image-20210909133721663.png)]

idea配置,安装scala插件,创建maven项目,项目右键 Add Framework Support…,添加scala版本,创建scala包,make root变蓝,创建scala文件测试。

变量和常量(重点)

1、

​ var i:Int = 10 常量 val j:Int = 20 变量 注意:能用常量的地方不用变量
var常量,可修改。val变量,不可修改,但是对象的属性可修改,取决于属性是常量还是变量

2、标识符:凡自己命名的都叫标识符。

​ (1)以字母或者下划线开头,后接字母、数字、下划线 , _不行 _ab可以

​ (2)以操作符开头,且只包含操作符(+ - * / # !等) +-/#!可以 +-/#!1不可以

​ (3)用反引号....包括的任意字符串,即使是 Scala 关键字(39 个)也可以,if可以 if不可以

3、字符串,拼接,%s等占位,println(s" a g e 岁 的 {age}岁的 age{name}在吃饭"),“”“保持原样输出

4、键盘输入,StdIn.readLine()、StdIn.readShort()、StdIn.readDouble()

数据类型(重点)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LXYHTKRx-1670683662251)(png/image-20210911104209737.png)]

1)一切对象的父类都是Any,所有数据都是对象。

2)数据类型有:数值类型(AnyVal)、引用类型(AnyRef),所有类型皆为对象。

3)数据类型同java一样仍然遵守,低精度的值类型向高精度值类型,自动转换(隐式转换)

4)Scala中的StringOps是对Java中的String增强

5)Unit:对应Java中的void,用于方法返回值的位置,表示方法没有返回值。Unit是 一个数据类型,只有一个对象就是()。Void不是数据类型,只是一个关键字

6)Null是一个类型,只有一个对象就 是null。它是所有引用类型(AnyRef)的子类。

7)Nothing,是所有数据类型的子类,主要用在一个函数没有明确返回值时使用,因为这样我们可以把抛出的返回值,返回给任何的变量或者函数。

Unit 类型、Null 类型和 Nothing 类型(重点)

数据类型描述
Unit表示空值,和其他语言中 void 等同。用作不返回任何结果的方法的结果类型。Unit 只有一个实例值,写成()。
Null表示空引用, Null 类型只有一个实例值 null
Nothing无返回,有错误的时候。兼容。Nothing 类型是任何其他类型的子类型。当一个函数,我们确定没有正常的返回值,可以用 Nothing 或者变量(兼容性),未理解,返回异常使用,异常又会抛出。。。。????

1、数值类型自动转换,从小到大,和java基本一致。强制类型转换(高转低)使用api,toInt等

运算符

本质:对象的方法的调用

val test01:Int=32
val test02:Int=32
println(test01.+(test02))

1、算术运算符+ - * \ %

2、关系运算符< > <= >= (java中是地址值和内容,scala中和equals都是内容,eq指引用地址)

3、逻辑运算符&& || !

4、赋值运算符= += -= *= /= %= <<=(左移后赋值) >>=(右移后赋值) &=(按位于后赋值c&=2 c=c&2) ^= |=

5、位运算符& | ^ ~ << >> >>>

流程控制

1、分支控制if-else if-elseif-else for (无switch,使用模式匹配)

三元运算符 java a ? b : c scala val res:Any = if (age < 18) “童年” else “成年”

注意点:1)可接收Scala 中 if else 表达式其实是有返回值的val result :String =if(){}

2、范围循环

​ for(i <- 1 to 3) i 表示循环的变量,<- 规定 to 。 i 将会从 1-3 循环,前后闭合

​ for(i <- 1 until 3) i 前闭合后开,即等同于for(i <- Range(1,10)),until对range的调用

3、循环守卫 for(i <- 1 to 3 if i != 2)(if条件可加,和写for里面一样)

4、循环步长for (i <- 1 to 10 by 2)

5、嵌套循环for(i <- 1 to 3; j <- 1 to 3)

6、遍历集合for(i <- Array/Set/List(12,32,4))

7、引入变量for(i <- 1 to 3; j = 4 - i) j和i管理,j随i变化而变化

8、循环返回值,基本不用,了解

val result01 = for(i <- 1 to 10) yield i * 2
println(result01)

9、循环翻转for(i <- 1 to 10 reverse)

10、while do…while

11、循环中断,使用throw exception或Breaks.breakable或
学习路径:https://space.bilibili.com/302417610/,如有侵权,请联系q进行删除:3623472230

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: flink-1.14.3-bin-scala_2.12 是Apache Flink的一个版本,它是一个基于分布式数据流处理的开源平台。Flink提供了高效的流处理和批处理能力,支持各种数据源和格式,具有高可用性、可伸缩性、易于使用和开发的特点。 其中,1.14.3代表这个版本是Apache Flink的第1.14.3个稳定版本,其中包含了性能优化、改进和新功能。Scala_2.12表示在这个版本中使用了Scala编程语言的2.12版本,这意味着这个版本支持Scala编程。 在flink-1.14.3-bin-scala_2.12中,最重要的新功能之一是针对Apache Kafka的完整支持。此外,还支持更优秀的可伸缩性,提供了更多的API变更和改进等。它还提供了一些改进,例如在任务重启时恢复状态,提高了批处理的性能和吞吐量。 总之,flink-1.14.3-bin-scala_2.12是一个高效、可伸缩、易于使用和开发的分布式数据流处理平台,支持流处理和批处理,被广泛用于企业级数据处理和实时数据分析。 ### 回答2: Flink-1.14.3-bin-scala_2.12是一个 Apache Flink 的软件发行版,主要针对 Scala 2.12 版本进行构建。Apache Flink是一个分布式流处理引擎,支持批量和流式数据处理和分析,并提供高可用性、可扩展性和容错性等特性。Flink-1.14.3-bin-scala_2.12是Apache Flink最新的稳定版本,其中包含了许多新的特性、改进和修复了一些前版本中存在的问题。在Flink-1.14.3-bin-scala_2.12中,采用了新的caching机制来提高性能,支持Kinesis Video Streams、Kudu、Flink SQL等新的特性,同时也优化了Flink Web Dashboard和Flink SQL Client的用户体验。Flink-1.14.3-bin-scala_2.12的使用需要一定的编程经验,可以使用Java、Scala或Python进行开发。此版本对于需要处理大规模数据的企业或个人提供了有力的支持,可以提高数据处理效率和准确性,同时也降低了使用成本和复杂度。 ### 回答3: Flink是一个大数据处理框架,其最新版本是flink-1.14.3。该版本支持Scala 2.12编程语言,并附带可执行二进制文件,文件名为“flink-1.14.3-bin-scala_2.12”。 该文件中包含了Flink的代码和相关依赖库,用户可以直接下载该文件并解压缩后即可开始使用Flink框架进行大数据处理。用户只需要将自己的程序代码打包成JAR文件,并提交给Flink集群运行,Flink就会自动管理和调度任务,实现高效的分布式计算。 该版本中包含了许多新的功能和改进,例如增强的流式数据处理能力、更简洁的API、更快的数据处理速度等。此外,该版本还修复了许多已知的问题和Bug,提高了Flink的稳定性和性能表现。 总之,flink-1.14.3-bin-scala_2.12是Flink框架的最新版本,其包含了许多有用的功能和改进,用户可以下载并使用该版本来进行高效的大数据处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值