基本概念定义
- 对象 - 对象有状态和行为。一个对象是类的一个实例。例如 - 狗有状态:颜色,名称,品种,它行为有:摇摆,吠叫和吃东西。
(java中,对象有属性和方法,大同小异,同样一个对象是一个类的实例) - 类 - 可以将类定义为描述与该类相关的行为/状态的模板/蓝图。
- 方法 - 一个方法基本上是一种行为。一个类可以包含很多方法。将逻辑代码写入的方法中,数据在方法中操纵并且执行所有的动作。
- 字段 - 每个对象都有其唯一的一组实例变量,称为字段。对象的状态是由分配给这些字段的值来创建的。
- 闭包 - 闭包是一个函数,其返回值取决于在此函数之外声明的一个或多个变量的值。
- 特征 - 特征(Traits)封装了方法和字段定义,然后可以通过将它们混合到类中来重用它们,特征(Traits)用于通过指定支持的方法的签名来定义对象类型。
基础语法(与java中大同小异)
- 区分大小写 - Scala是区分大小写的,比如标识符Hello和hello在Scala中表示不同的含义(对象)。
- 类名称 - 对于所有类名,第一个字母应为大写。如果使用多个单词来形成类的名称,则每个内部单词的第一个字母应该是大写。
示例 - class MyFirstScalaClass,class Employee*类等。 - 方法名称 - 所有方法名称应以小写字母开头。如果使用多个单词形成方法的名称,则每个内部单词的第一个字母应为大写。
示例 - def myMethodName(),def getName()等。 - 程序文件名 - 程序文件的名称应与对象名称完全匹配。保存文件时,您应该使用对象名称保存它(记住Scala是区分大小写的),并将.scala附加到文件名称的末尾。 (如果文件名和对象名不匹配,则程序将不会编译)。
示例 - 假设HelloWorld是对象名称。 那么文件应该保存为HelloWorld.scala。 - def main(args:Array [String]) - Scala程序从main()方法开始,这是每个Scala程序的强制性部分。
scala标识符
所有Scala组件都需要名称。用于对象,类,变量和方法的名称称为标识符。关键字不能用作标识符,标识符区分大小写。Scala支持四种类型的标识符。
-
字母数字标识符
字母数字标识符以字母或下划线开头,后面可以有更多的字母,数字或下划线。 $字符是Scala中的保留关键字,不应在标识符中使用。
以下是合法的字母数字标识符 :
age, salary, _value, __1_value
以下是非法标识符 :
$salary, 123abc, -salary
-
运算标识符
运算符标识符由一个或多个运算符字符组成。运算符字符是可打印的ASCII字符,如:+,:,?,~或#。
Scala编译器将在内部将操作符标识符转换成具有嵌入式$字符的合法Java标识符。例如,标识符:->将被内部表示为$colon$minus$greater。
-
混合标识符
混合标识符由字母数字标识符组成,后面跟着一个下划线和一个操作符标识符。
以下是合法的混合标识符 :
unary_+, myvar_=
这里,一元_+用作方法名称定义一个一元的+运算符,而myvar_=用作方法名定义一个赋值运算符(运算符重载)。
-
字面识别符
一个文字标识符是一个随意的字符串,包含在后面的勾号(...)中
以下是合法的文字标识符 :
'x' '<clinit>' 'yield'
scala关键字
abstract | case | catch | class |
---|---|---|---|
def | do | else | extends |
false | final | finally | for |
forSome | if | implicit | import |
lazy | match | new | Null |
object | override | package | private |
protected | return | sealed | super |
this | throw | trait | Try |
true | type | val | Var |
while | with | yield | |
- | : | = | => |
<- | <: | <% | >: |
# | @ |
scala数据类型
Scala与Java具有相同的数据类型,具有相同的内存占用和精度。
序号 | 数据类型 | 说明 |
---|---|---|
1 | Byte | 8位有符号值,范围从-128至127 |
2 | Short | 16位有符号值,范围从-32768至32767 |
3 | Int | 32位有符号值,范围从-2147483648至2147483647 |
4 | Long | 64位有符号值,范围从-9223372036854775808至9223372036854775807 |
5 | Float | 32位IEEE 754单精度浮点值 |
6 | Double | 64位IEEE 754双精度浮点值 |
7 | Char | 16位无符号Unicode字符。范围从U+0000到U+FFFF |
8 | String | 一个Char类型序列 |
9 | Boolean | 文字值true或文字值false |
10 | Unit | 对应于无值 |
11 | Null | null或空引用 |
12 | Nothing | 每种其他类型的亚型; 不包括无值 |
13 | Any | 任何类型的超类型; 任何对象的类型为Any |
14 | AnyRef | 任何引用类型的超类型 |
上面列出的所有数据类型都是对象。Scala中没有类似Java中那样的原始类型。 这意味着您可以调用Int,Long等方法。