scala自学日记(7)-Scala与Java在语法上的差异
来源:互联网 发布:多米诺a200 pc软件 编辑:程序博客网 时间:2024/05/07 02:54
这里简单地列举一下Scala与Java在语法上的差异。
• 类型的声明不是“类型 变量 = 值”而是“变量:类型 = 值”。但是,在类型推断可能的情况下类型声明可以省略。
• 不可变的变量用val,可变的变量用var来声明。任意的数据都可以用def来命名(包括val也可以替换成def)。使用def来声明函数和方法。
• 语句分隔符“;”是可选的,通常用换行来表示。
• 一连串复合语句可以用“;”来分割,然后用“{”和“}”块来包括起来。如果单语句的不用大括号包括也可以。例如for语句既可以是for(i < - List(1, 2, 3, 4)){println(i)},也可以是for(i < - List(1, 2, 3, 4)) println(i)。
• 包括数字、字符串和数组,所有的数据都是对象。包括Java的原类型int、double和bool等所有的数据都对应于Scala中的相应类。
• void作为Unit类来处理,Unit的唯一实例是()。
• 以array(i)来使用数组的索引而不是array[I]。数组项目的取得array(i)和更新array(i) = x也可以认为是调用array.apply(i)和array.update(i, x)方法。
• []可以用来指定范型的具体类型,比如type IList = List[Int]为声明项目类型为Int的列表类型。可以用asInstanseOf[T]方法来强制转换类型,虽然使用了范型之后大部分情况下是用不着的。
• for循环并不是语法,而是被定义为称作for-comprehension的语法糖,最后被转换成map和filter等方法的组合。
• 有意放弃了静态(static)的概念,而是用单例对象来取代了静态对象和方法。不是用class而是用object像“object Singleton extends Object { val data: Int }”一样被定义,其中的属性可以用来代替静态成员。
• 使用import语句来引入包和类,并用“_”代替了“*”。比如import javax.swing.JFrame; import javax.swing.JFrame._。可以格式 “import javax.swing.{JFrame=>MyWindow}”来声明类型的别名。
原文地址:http://developer.51cto.com/art/200912/166824.htm
- scala自学日记(7)-Scala与Java在语法上的差异
- scala自学日记(5)-scala方法的定义方式
- scala自学日记(8)-Scala里面的Option
- C、PHP、JAVA、Scala、Golang 语法差异汇总表
- scala自学日记(6)-数组的初始化以及循环
- scala自学日记(1)-Debain操作系统里面安装scala
- scala自学日记(2)-使用Scala解释器(interpreter)
- scala自学日记(4)-万物皆对象
- Java和Scala学习日记7
- SQL Server与 Access在SQL语法上的差异
- scala与Java的不同
- scala与java的区别
- scala与java的区别
- Scala与Java的交互
- scala的语法糖
- scala 【有意思的语法】
- scala类型系统:2) classOf与getClass方法的差异
- Scala与Java在空值上判定的探讨
- ibatis模糊查询的like '%$name$%'的sql注入避免
- ubuntu10.10下安装增强版的gedit文本编辑器
- 时间转换 MJD & UTC
- 《成为技术的领导者》读书笔记
- iPhone开发笔记(17)使用EGOTableViewPullRefresh实现列表的下拉刷新功能
- scala自学日记(7)-Scala与Java在语法上的差异
- Git rebase、pull、push 出现 conflict 后不能merge的解决方法
- 华为一面的心得
- xcode4.3.2 代码自动完成竟然出问题
- const、static、extern、volatile的用法详解
- 模版特化
- linux一些系统调用的再实现
- python-自定义模块【公用】
- MMSeg中文分词算法