初识scala

概念

        Scala是一门多范式的编程语言,一种类似java的编程语言  ,设计初衷是实现可伸缩的语言  、并集成面向对象编程和函数式编程的各种特性。

        Scala来源Scalable(可伸缩的)编程语言,既可以写非常小的脚本,又可以写非常复杂的服务器程序,Scala是一种纯正的面向对象语言,具备函数式编程的特性,Scala构建在JVM之上,无缝Java互操作,可以是可以把Java中的架包,直接引入到Scala代码中调用,也可以在Java程序中调用Scala的东西。

        Martin Odersky于2001年设计制作的Scala,  Martin Odersky先前的工作是Generic Java和javac(Sun Java编译器)。

为什么要学习Scala语言

首先我们来分析一下为什么要学习Scala语言
最直接的一点就是因为我们大数据Spark框架需要用到Scala这门语言
但是Spark其实是同时支持Scala语言和Java语言的,为什么非要学Scala呢,使用java它难道不香吗?

这就要说第二点了:看下面的代码,使用Spark统计文件内单词出现的次数这个需求,使用java代码和scala代码的区别是有多么的明显,在代码量上来说,scala是完胜java的,所以在实际工作中开发spark代码,我们都是需要使用scala的,使用java实现函数式编程太别扭了,代码量太大,这个就是我们学习scala的最直接的原因。

image.png

image.png


 

image.png

Java VS Scala

从定义上来说,Java是面向对象的编程语言,而Scala是函数式编程语言,这两门语言之间,本身也有一定的关联。

Scala来源于Java,又“高于”Java,在Java之上增加了一层编码的“API”,让程序员可以通过函数式编程的方式来开发程序。

Scala程序最终被编译为.class文件运行在JVM虚拟机中,所以它是JVM下的语言一种,在实际的大数据开发任务当中,Java和Scala都运行于JVM之上,也能更好地集成。

Scala语言在大数据场景下,大多数是用来构建处理数据的。作为开发者,只需要关注收到的数据是什么格式,要把收到的数据分类映射成什么格式,映射后的数据接下来又如何映射成我所需要的数据集(常用的数据集有TopN,Accumulator等)。

Java和Scala的区别

1.变量声明

var变量;val常量;Scala支持自动类型推断

Scala更多的是采用常量,而不是变量来解决问题,这样带来的好处是可以减少多线程并发安全问题,特别适合高并发分布式的场景。

2.函数的声明

关键字def,Scala函数没有返回值时使用Unit,相当于Java的void。

Scala支持函数式编程,可以使用高阶函数,函数是一等公民。

3.基本类型

Scala中没有真正意义上的基本类型,类型都是类。

4.静态

Java中静态static是违背Java OOP编程思想和封装特性。

Scala取消了静态的概念,使用了单例对象Object来实现。

5.字符串

Scala支持使用字符串插值的方式对字符串进行格式化,使用$开头进行取值。

另外支持使用三引号将其中的内容直接包起来(Python也有三引号),其中可以包括任何字符,而不需要进行特别转义。

6.类

Scala类中的字段自动带有getter和setter方法,另外可以使用@BeanProperty注解来生成Java中的Get/Set方法。

Scala中的每个类都有一个主构造方法,这个构造方法和类定义“交织在一起”,类的参数直接成为类的字段,主构造方法执行类体中的所有语句。

7.Scala中不支持break

使用return替代

在循环中使用if和布尔类型变量

导入Java中支持break的包

8.访问范围

Java中外部看不到内部,内部能看到外部

Scala中外部看不到内部,内部也看不到外部

9.通配符

Java中使用*进行通配

Scala中使用_进行通配

10.默认导入的类

Scala默认java.lang包、Scala包、Scala.Predef类

Java默认导入java.lang包

11.特质trait可以类比Java中的接口,但是和接口非常不一样

Java中称为类实现了接口,Scala中称为混入了特质

和Java中的接口不同,Scala中的特质可以包含带有方法体的方法(JDK8接口也可以的,比如default方法)。

        Java和Scala编程,以上就为大家做了简单的对比了。在大数据开发任务当中,Java语言和Scala语言都在各自的场景下发挥着作用,而Scala的学习,对于Spark框架的掌握尤其重要。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值