Scala变量和常量
(1)声明变量时,类型可以省略,编译器自动推导,即类型推导(与Java不同)
(2)类型确定后,就不能修改,说明 Scala 是强数据类型语言。(与JavaScript不同)
(3)变量声明时,必须要有初始值(与Java不同)
(4)在声明/定义一个变量时,可以使用 var 或者 val 来修饰,var 修饰的变量可改变,val 修饰的变量不可改。
(5)var 修饰的对象引用可以改变,val 修饰的对象则不可改变,但对象的状态(值)却是可以改变的。(比如:自定义对象、数组、集合等等)
object TestVar{
def main(args: Array[String]): Unit = {
// (1)声明变量时,类型可以省略,编译器自动推导,即类型推导
var age = 18
age = 30
// (2)类型确定后,就不能修改,说明Scala是强数据类型语言。
// age = "20" //错误
// (3)变量声明时,必须要有初始值(**与Java不同**)
// var name //错误
// (4)在声明/定义一个变量时,可以使用var或者val来修饰,var修饰的变量可改变,val修饰的变量不可改。
var num1 = 10 //可变
val num2 = 20 //不可变
num1 = 30 //正确
// num2 = 30 //错误
}
}
// (5)var修饰的对象引用可以改变,val修饰的对象则不可改变,但对象的状态(值)却是可以改变的。
// (比如:自定义对象、数组、集合等等)
def main(args: Array[String]): Unit = {
// p1 是 var 修饰的,p1 的属性可以变,而且 p1 本身也可以变
var p1 = new Person()
p1.name = "dalang"
p1 = null
// p2 是 val 修饰的,那么 p2 本身就不可变(即 p2 的内存地址不能变),
但是,p2 的属性是可以变,因为属性并没有用 val 修饰。
val p2 = new Person()
p2.name="jinlian"
// p2 = null // 错误的,因为 p2 是 val 修饰的
} }
class Person{
var name : String = "jinlian"
}
Scala标识符
(1)以字母或者下划线开头,后接字母、数字、下划线
(2)以操作符开头,且只包含操作符(+ - * / # !等)(与Java不同)
(3)用反引号....
包括的任意字符串,即使是 Scala 关键字(39 个)也可以(与Java不同)
object TestName {
def main(args: Array[String]): Unit = {
// (1)以字母或者下划线开头,后接字母、数字、下划线
var hello: String = "" // ok
var Hello12: String = "" // ok
var 1hello: String = "" // error 数字不能开头
var h-b: String = "" // error 不能用-
var x h: String = "" // error 不能有空格
var h_4: String = "" // ok
var _ab: String = "" // ok
var Int: String = "" // ok 因为在 Scala 中 Int 是预定义的字符,
不是关键字,但不推荐
//(2)以操作符开头,且只包含操作符(+ - * / # !等)
var +*-/#! : String = "" // ok
var +*-/#!1 : String = "" // error 以操作符开头,必须都是操作符
//(3)用反引号`....`包括的任意字符串,即使是 Scala 关键字(39 个也可以
var if : String = "" // error 不能用关键字
var `if` : String = "" // ok 用反引号`....`包括的任意字符串,
包括关键字
} }