一、初接触
1.scala源代码被编译成Java字节码,所以它可以运行于JVM之上,并可以调用现有的Java类库
2.scala特性: 纯面向对象、函数式语言(允许嵌套多层函数,支持柯里化和模式匹配)、具备类型系统(通过编译时检查,保证代码的安全性和一致性)、扩展性、使用Actor作为其并发模型(Actor可以复用线程)、scala web框架(Lift框架和Play框架)
3.scala语句末尾的分号 ; 是可选的
4.编写scala程序可以选择交互式编程或脚本编程。
在 CMD 直接输入
scala
即进入交互式命令界面,
注:在交互式界面,输入 :q 可以退出,要查看更多控制方法可以通过输入 :h 或 :help 来查看
要使用脚本编程,在 CMD 输入
scalac HelloWorld.scala
ls
即对目标文件编译,并生成目标文件的编译文件 HelloWorld$.class 和 HelloWorld.class
编译后可在JVM上查看,也可直接使用以下命令执行程序
scala helloworld.scala
二、基本语法
1.注意点: 区分大小写、所有类名第一个字母大写、方法名称的第一个字母小写、程序文件的名称应与对象名称完全一致,例如
class MyFirstScalaClass def myMethodName()
main 程序格式: def main(args: Array[string])
2.标识符:字符数字和符号,字符数字使用字母或是下划线开头,后面可以接字母或是数字,符号 "$" 在 Scala 中也看作为字母。然而以 "$" 开头的标识符为保留的 Scala 编译器产生的标志符使用; 避免使用以下划线结尾的标志符以避免冲突; Scala 内部实现时会使用转义的标志符
Scala 内部实现时会使用转义的标志符,比如:-> 使用 $colon$minus$greater 来表示这个符号
混合标志符由字符数字标志符后面跟着一个或多个符号组成,比如 unary_+ 为 Scala 对+方法的内部实现时的名称
你可以在"之间使用任何有效的 Scala 标志符,Scala 将它们解释为一个 Scala 标志符
3.关键字
4.注释
/* ... */ 或 //
5.Scala 包
定义包
package com.runoob
class HelloWorld
或
package com.runoob {
class HelloWorld
}
6.引用
import java.awt.Color // 引入Color
import java.awt._ // 引入包内所有成员
import语句可以出现在任何地方,而不是只能在文件顶部。import的效果从开始延伸到语句块的结束。这可以大幅减少名称冲突的可能性。
如果想要引入包中的几个成员:
import java.awt.{Color, Font}
// 重命名成员
import java.util.{HashMap => JavaHashMap}
// 隐藏成员
import java.util.{HashMap => _, _} // 引入了util包的所有成员,但是HashMap被隐藏了
注:默认情况下,Scala 总会引入 java.lang._ 、 scala._ 和 Predef._,这里也能解释,为什么以scala开头的包,在使用时都是省去scala.的
三、数据类型
1.同 Java,即:
byte、short、int、long、float、double、char、string、boolean、
unit(无值)、null、nothing(类层级的最低端)、any(所有累的超类)、anyref(所有引用类的基类)
2.Scala 基础字面量
整型字面量,默认为 int,如为 long,需要加 L 或 l 后缀
浮点型字面量,加 f 或 F 后缀表示为 float,否则默认为 double
布尔型字面量,true | false
符号字面量,使用单引号来定义
字符串字面量,使用双引号来定义
多行字符串的表示方法,""" ... """
Null 值,Scala.Null 和 scala.Nothing 是用同一的方式处理 Scala 面向对象类型系统的某些"边界情况"的特殊类型
Null 类是 null 引用对象的类型,它是每个引用类(继承自 AnyRef 的类)的子类。Null 不兼容值类型。
3.Scala 转义字符
\b,\u0008,退格(BS)
\t,\u0009,水平制表(HT)
\n,\u000a,换行(LF)
\f,\u000c,换页(FF)
\r,\u000d,回车(CR)
\",\u0022,双引号
\',\u0027,单引号
\\,\u005c,反斜线
0 到 255 间的 Unicode 字符可以用一个八进制转义序列来表示,即反斜线‟\‟后跟 最多三个八进制。在字符或字符串中,反斜线和后面的字符序列不能构成一个合法的转义序列将会导致编译错误。
四、Scala变量