java与scala的区别 个位数以内的 就喜欢作者这么言简意赅的
可以说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的区别 个位数以内的 就喜欢作者这么言简意赅的相关推荐
- 大数据入门:Java和Scala编程对比
在学习大数据之初,很多人都会对编程语言的学习有疑问,比如说大数据编程主要用什么语言,在实际运用当中,大数据主流编程是Java,但是涉及到Spark.Kafka框架,还需要懂Scala.今天的大数据入门 ...
- 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 ...
- Akka 系列(五):Java 和 Scala 中的 Future
随着CPU的核数的增加,异步编程模型在并发领域中的得到了越来越多的应用,由于Scala是一门函数式语言,天然的支持异步编程模型,今天主要来看一下Java和Scala中的Futrue,带你走入异步编程的 ...
- Java,Scala,Guava和Trove集合-它们可以容纳多少数据?
关于我们的数据结构,令人着迷的事情之一是,即使我们对它们非常熟悉,我们仍然很难说出像HashMap这样基本的东西在1GB的内存中可以容纳多少个项目. 我们可能会在学校,高级开发人员那里学到这一点,或者 ...
- 【Spark】开发Spark选择Java还是Scala?
Spark-Java-Scala-哪种语言 spark java 支持_百度搜索(1 封私信)Spark 中用 Scala 和 java 开发有什么区别? - 知乎(1 封私信)Spark平台下,sc ...
- Scala深入浅出——从Java到Scala
本文适合有一定Java基础的,并想系统学习Scala的小伙伴借鉴学习.文章有大量实例,建议自己跑一遍. Scala深入浅出--从Java到Scala Scala 一.介绍 1.什么是Scala? 2. ...
- JVM 并发性: Java 和 Scala 并发性基础(1)
转载于:http://www.itxuexiwang.com/a/javajishu/jvm_jdk_yuanmafenxi/2016/0129/50.html?1454076380 处理器速度数十年 ...
- spark需要maven管理吗_Spark-Maven全新安装:如何同时编译Java和Scala类
我有一个Spark项目,其中同时包含.scala和.java文件.我正在尝试通过Maven构建来编译这两种类型的类.但是,当我运行" mvn clean install"时,它只会 ...
- java 与 |与||的区别
java &与&& |与||的区别 一.与操作和或操作的区别 (1)在Java程序中,使用与操作,要求所有表达式的判断结果都是TRUE,才为真,若有一个为FALSE,那么最终判 ...
最新文章
- git远程仓库回退版本
- Eclipse debug Source not found
- 时序轮转的意思_天地是景框时序轮转的风景----(傻女人)
- WinCE的开发流程
- java for mat,在Java绑定中通过OpenCV Mat进行循环
- 免费python编程自学网站-想免费学生信?25个自学网站,任你选!
- python内置函数__init__及__str__的区别
- K3 WISE 开发插件《SQL语句WHERE查询-范围查询/模糊查询》
- HTML前端在线购书商城,基于HTML css的商城购物前端模板
- Vue 脚手架 环境搭配
- 广告的术语和简称大全
- maya python插件_使用Python开发Maya导出插件的一些辅助
- HAPI使用方法总结(HITRAN数据库,HITEMP数据库)
- Arturia V Collection 9 for mac - Arturia系列合成器合集
- TortoiseSVN安装及使用总结
- linux如何输入命令,linux中的命令如何输入
- 学人工智能必备的数学课,再也不怕学AI了
- iOS 热更新,实时代码更新,动态更新,动态库framework
- mysql eof_EOF随记
- 史上最著名的10个思想实验(思想解放运动)
热门文章
- 3d slicer调整窗宽窗位_3D人脸模型月销量上千单,谁在打印,谁在帮打?
- 神了,无意中发现一位1500道的2021LeetCode算法刷题pdf笔记
- java输入输出及文件_java输入输出流及文件操作
- yabailv 运放_运放的压摆率
- LNMP架构详解(1)——了解架构的基本信息
- PHP实现时间轴函数
- oracle卸载注意啥,关于oracle的安装,卸载以及其他注意事项
- ucl计算机硕士选课,伦敦大学学院UCL这4个超酷的机器学习专业
- r语言logistic回归_R语言多分类logistic逻辑回归模型在混合分布模拟单个风险损失值评估的应用...
- pytorch bert文本分类_一起读Bert文本分类代码 (pytorch篇 四)