可以说scala来源于java,但又高于java,我的理解是scala就是在java语言的基础上增加了一层编码的 “壳” 让程序人员可以通过函数式编程的方式来开发程序。由于scala最终被编译为.class文件运行在JVM虚拟机中,其实本质上还是java, 所以在scala和java可以互调双方的api;
区别:

1,变量的声明

变量var 常量val scala支持自动类型推测
scala更多的是采用常量,而不是变量来解决问题,这样带来的好处是可以减少多线程并发安全问题,特别适合用于多并发分布式的场景

2,函数的声明

关键字def, Scala函数没有返回值用Unit,相当于java的void
Scala支持函数式编程,可以使用高阶函数 函数是一等公民

3,基本类型

其实可以认为scala中并没有真正意义上的基本类型,他的类型都是类

4,静态

java中静态static是违背java面向对象的编程思想和封装特性的,scala取消了静态的概念,使用了单例对象Object来实现

5,对字符串的支持

Scala支持使用字符串插值的方式对字符串进行格式化,使用$开头进行取值
另外支持使用三引号将其中的内容直接包起来,其中可以包括任何字符而不需要转义

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中的特质可以包含 带有方法体的方法

https://www.jianshu.com/p/2df9ca9f49ab

java与scala的区别 个位数以内的 就喜欢作者这么言简意赅的相关推荐

  1. 大数据入门:Java和Scala编程对比

    在学习大数据之初,很多人都会对编程语言的学习有疑问,比如说大数据编程主要用什么语言,在实际运用当中,大数据主流编程是Java,但是涉及到Spark.Kafka框架,还需要懂Scala.今天的大数据入门 ...

  2. 09_Flink入门案例、word-count程序(java和scala版本)、添加依赖、Flink Streaming和Batch的区别 、在集群上执行程序等

    1.9.Flink入门案例-wordCount 1.9.1.开发工具 1.9.2.编写java版本word-count程序 1.9.2.1.添加Flink Maven依赖 1.9.2.2.编写word ...

  3. Akka 系列(五):Java 和 Scala 中的 Future

    随着CPU的核数的增加,异步编程模型在并发领域中的得到了越来越多的应用,由于Scala是一门函数式语言,天然的支持异步编程模型,今天主要来看一下Java和Scala中的Futrue,带你走入异步编程的 ...

  4. Java,Scala,Guava和Trove集合-它们可以容纳多少数据?

    关于我们的数据结构,令人着迷的事情之一是,即使我们对它们非常熟悉,我们仍然很难说出像HashMap这样基本的东西在1GB的内存中可以容纳多少个项目. 我们可能会在学校,高级开发人员那里学到这一点,或者 ...

  5. 【Spark】开发Spark选择Java还是Scala?

    Spark-Java-Scala-哪种语言 spark java 支持_百度搜索(1 封私信)Spark 中用 Scala 和 java 开发有什么区别? - 知乎(1 封私信)Spark平台下,sc ...

  6. Scala深入浅出——从Java到Scala

    本文适合有一定Java基础的,并想系统学习Scala的小伙伴借鉴学习.文章有大量实例,建议自己跑一遍. Scala深入浅出--从Java到Scala Scala 一.介绍 1.什么是Scala? 2. ...

  7. JVM 并发性: Java 和 Scala 并发性基础(1)

    转载于:http://www.itxuexiwang.com/a/javajishu/jvm_jdk_yuanmafenxi/2016/0129/50.html?1454076380 处理器速度数十年 ...

  8. spark需要maven管理吗_Spark-Maven全新安装:如何同时编译Java和Scala类

    我有一个Spark项目,其中同时包含.scala和.java文件.我正在尝试通过Maven构建来编译这两种类型的类.但是,当我运行" mvn clean install"时,它只会 ...

  9. java 与 |与||的区别

    java &与&& |与||的区别 一.与操作和或操作的区别 (1)在Java程序中,使用与操作,要求所有表达式的判断结果都是TRUE,才为真,若有一个为FALSE,那么最终判 ...

最新文章

  1. git远程仓库回退版本
  2. Eclipse debug Source not found
  3. 时序轮转的意思_天地是景框时序轮转的风景----(傻女人)
  4. WinCE的开发流程
  5. java for mat,在Java绑定中通过OpenCV Mat进行循环
  6. 免费python编程自学网站-想免费学生信?25个自学网站,任你选!
  7. python内置函数__init__及__str__的区别
  8. K3 WISE 开发插件《SQL语句WHERE查询-范围查询/模糊查询》
  9. HTML前端在线购书商城,基于HTML css的商城购物前端模板
  10. Vue 脚手架 环境搭配
  11. 广告的术语和简称大全
  12. maya python插件_使用Python开发Maya导出插件的一些辅助
  13. HAPI使用方法总结(HITRAN数据库,HITEMP数据库)
  14. Arturia V Collection 9 for mac - Arturia系列合成器合集
  15. TortoiseSVN安装及使用总结
  16. linux如何输入命令,linux中的命令如何输入
  17. 学人工智能必备的数学课,再也不怕学AI了
  18. iOS 热更新,实时代码更新,动态更新,动态库framework
  19. mysql eof_EOF随记
  20. 史上最著名的10个思想实验(思想解放运动)

热门文章

  1. 3d slicer调整窗宽窗位_3D人脸模型月销量上千单,谁在打印,谁在帮打?
  2. 神了,无意中发现一位1500道的2021LeetCode算法刷题pdf笔记
  3. java输入输出及文件_java输入输出流及文件操作
  4. yabailv 运放_运放的压摆率
  5. LNMP架构详解(1)——了解架构的基本信息
  6. PHP实现时间轴函数
  7. oracle卸载注意啥,关于oracle的安装,卸载以及其他注意事项
  8. ucl计算机硕士选课,伦敦大学学院UCL这4个超酷的机器学习专业
  9. r语言logistic回归_R语言多分类logistic逻辑回归模型在混合分布模拟单个风险损失值评估的应用...
  10. pytorch bert文本分类_一起读Bert文本分类代码 (pytorch篇 四)