scala中有两种变量类型:可变变量和不可变变量。可变变量指的是变量被赋值后,变量值可以随着程序的运行而改变,可变变量用关键字 var 定义,不可变变量用关键字 val 定义。
val helloString = "Hello Word" //Scala 会自动进行类型判断
helloString = "Hello" //错误,不能被重新赋值
//var 可变变量
var helloString = "Hello Cruel Word"
//重新赋值
helloString = "GoodBye Cruel Word"
另外,变量定义的初始化还可以用占位符 '_' 进行初始化,字符类型的初始化成null,数字类型的初始化为0
var s2:String = _ //s2:String = null
var il:Int = _ //il:Int = 0
var f1:Float = _ //f1:Float = 0.0
var c1:Char = _ //c1:Char = ?
lazy 修饰符可以被用来修饰 val 变量,经过 lazy 关键字修饰的变量只有在真正使用时才会被赋值
lazy val v1 = "test" // v1:String = <lazy>
基本数据类型
Byte 字节类型 8位有符号的整数
Short短整型 16位有符号的整数
Int 整型 32位有符号的整数
Long长整型 64位有符号的整数
Char字符型 16位无符号字符
String字符串型 连续字符串
Float浮点型 32位浮点数
Double 64位双精度浮点数
Boolean 布尔型
如果直接输入浮点数,scala会默认解释成Double类型,需要在浮点数后加f才能定义Float类型的变量。
val floatNumber = 3.141529f //floatNumber:Float = 3.141529
Char类型表示的是字符类型,用单引号将字符包裹起来。
var charLiteral = 'A'
var x = '\"' //部分特殊字符如双引号,换行符及反斜杠等的定义需要加转义字符 \ 或者用Unicode 编码
var x = '\u0022' //x:Char = "
String类型表示的是字符串类型,用""包裹,或者用3个双引号 """ xxx """ 包裹
val helloWord = "Hello Word"
var helloWord = """Hello Word"""
基本操作符
算术操作 加(+)、减(-)、乘(*)、除(/)、取模(%)
关系运算操作 大于(>)、小于(<)、小于等于(<=)、大于等于(>=)
逻辑运算操作 与(&&)、或(||)、非(!)
对象比较 等于(==)或 x.equals(y) 等价 x == y
字符串运算操作
var str = "Hello" // str:String = Hello
str.indexOf("o") // 4 查找对应位置
str.toUpperCase //这个不用解释了 str.toLowerCase
str.reverse //反转 olleH
str.drop 3 //丢弃前3个字符 lo
str slice<1,4> //相当于python str[1:4] res = ell
元组类型
元组可以将不同的值放在一个变量中保存
("hello","china","beijing") // (String,String,String) = (hello,china,beijing)
var tuple = ("Hello","China",1) //不同的变量类型
//要访问元组的内容,可以通过 变量名._N 的方式进行,N表示元组中元素的索引号
tuple._1 // Hello 注意索引是从 1 开始,而不是 0
//在使用时还可以将元组的内容进行提取,对变量进行初始化
val (first,second,third) = tuple
first:String = Hello
second:String = China
third:Int = 1