(一)Scala的变量
定义:变量是一种使用方便的占位符,用于引用计算机内存地址,变量创建后会占用一定的内存空间。
关键字:有两个 var 和 val。
var 是 variable 的简写,用来定义可变变量,
val 是 value 的简写,用来定义不可变变量
定义一个变量的格式
var | val 变量名:数据类型 = 值
其中,数据类型可以省略
//变量
// var 变量名:类型 = 值
// val 变量名:类型 = 值
// 类型可以省略
var i:Int = 1
val j = 2
//var:定义可变变量
i = 2 // i这个变量的值是可以修改的
// val : 定义不可变变量
//j = 3 // val 定义的变量的值是不可以被修改的 ====== 类似于常量
println(i)
println(j)
// 变量名-标识符.不能以数字开头,并且不能是关键字
var a0 = 100
//var a*b = 100 //if是关键字,不能被用做变量名,不能包含特殊符号 # ,不能有空格
定义多个变量
var|val 变量名1, 变量名2, ... = 值
var i,j = 1;
(二)Scala的标识符
1. 标识符的定义
标识符是编程时使用的名字,可用于给变量、常量、函数、语句块等命名,以建立起名称与使用之间的关系。
2. 标识符的作用
作用是给对象、类、变量和方法命名。名字规则:
(1)标识符不能以数字开头,并且不能是Scala中的关键字(但可以包含关键字)。
(2)符号开头的标识符被保留作为Scala编译器产生的标识符之用,应用程序应该避免使用$开头的标识符,以免造成冲突。
(三)Scala的关键字
def: 定义方法()
implicit: 隐式转换
lazy: 懒加载
match: 模式匹配,类似switch
(四)Scala代码中的注释
在代码中添加注释可以解释说明程序,提高程序的可读性。和Java一样,在Scala中,主要有三种注释的方式:
1. 单行注释。 // 注释的内容
2. 多行注释。 /* 注释的内容 */
3. 文档注释。/** 注释的内容*/
(五)Scala的分号
分号是一个语句的分隔符。用来判断一个语句或表达式是否结束。
[java和scala对比讲解]:java中强制使用用分号结束一行,而Scala具有自动推断分号的功能。也就是说,在Scala中编写代码换行时,可以不加分号,当没有加分号时,Scala会在编译时自动加上分号。
要点:虽然Scala具有自动推断分号的功能,但是必须遵守以下规则:
1.如果一行只有一条语句或一个表达式时,则分号可以加,也可以不加;
2.如果一行有多条语句或多个表达式时,则分号必须填写。
val a =() 2 println(a) // 会报错
( 六)Scala的数据类型
变量的数据类型有以下作用:
· 限制一个变量能被赋予的值和这些值的操作;
· 限制一个表达式可产生的值。
Scala的数据类型可以分为“数值类型”和“非数值类型”两大类。其中,数值类型跟Java中的数值类型是相同的,而非数值类型有点类似于Java中的引用类型,如:对象、字符串等。
与java的区别:
1. 数据类型的首字符都是大写的。
2. 定义变量时可以省略类型,让scala编译器自动推断。
Scala支持的数据类型
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:字符序列
9. Boolean:true或false
10. Unit:表示无值,和其他语言中的void等同。用作不返回任何结果的方法的结果类型。Unit只有一个实例值,写成()
11. Null:null或空引用
12. Nothing:Nothing类型在Scala的类层级的最底端,它是任何其他类型的子类型
13. Any:Any是所有其他类的超类
14. AnyRef:AnyRef类是Scala里所有引用类(reference class)的基类
类型层次图
(七)Scala中的数值数据类型
Scala中的数值类型可以分为三大类,分别为整数类型、字符类型和浮点类型,如图所示。其中整数类型包括字节、短整型(占16位)、整型(占32位)、长整型(占64位),浮点类型有单精度和双精度之分。
val a = 3()
var b = 3L // L 表示长整型
var c:Float = 3.0f // f 表示浮点型
var d = 1.1 // 默认小数是double
(八)Scala的字符串类型
两种方式:
1. 双引号:""
2. 多引号:""" """。可支持换行。
3.在Scala中可使用插值字符串将变量插到字符串中
例如s"his name is $name"
(九)类型转换
自动类型转换
在赋值和运算时,范围小的数据类型会自动转换为范围大的数据类型,再计算。
例如:
1 + 1.1 的结果就是Double类型的2.1。
范围类型从小到大排列如下:
byte → short → char → Int -> Long → Float → Double
val a:Int() = 3
val b:Double = 3 + 2.21 // 结果是Double
val c:Byte = a + 1 // 报错,Int类型不能保存到Byte类型
强制转换]
格式:具体的值.toXXX
val c:Int = (1 + 1.21).toInt // 自动舍弃了小数的部分