val:常量,相当于Java中的fimal关键字
1. 当val修饰值类型时,不可修改
2.当val修饰引用类型,引用不可变,但是引用的内容可以改变
var:变量,可以改变
注意点:
1.优先使用val(在无需改变时),有利于代码的可读性和垃圾回收
2.lazy关键字只针对val,表示需要使用的时候才进行赋值,用于不确定的初始化工作
3. scala能自动进行变量的类型推断,但它与Java,C等语言一样是静态类型语言
object s2_scalaVal {
def main(args: Array[String]): Unit = {
// 变量定义
var v1 = 1
var v2: Int = 2
// 常量定义 val修饰的基本数据类型,在scala中称为值类型,其值不可以修改
val v3 = 1 // 相当于final修饰
val v4: Double = 2.0
// v3 = 4 报错
println(v1 + v2 + v3 + v4)
// val 修饰的引用类型,引用不可变,引用的内容可变
val a1 = Array(1, 2, 3)
val a2 = Array(4, 5, 6)
// a1 = a2 不可以,引用不可变
a1(0) = 10 // 可以,内容可以变
println(sum(a1))
// val 可以使用lazy修饰,在需要使用的时候才会赋值
lazy val lazy1 = 256
println(lazy1) // 使用时会赋值
// forLoop
var a = 0
// for 循环
/*
* for( var x <- Range ){
statement(s);
}*/
for (a <- 1 to 10) {
print(a + " ");
}
println()
}
// 注意函数的写法
/*
* def functionName ([参数列表]) : [return type] = {
function body
return [expr]
}*/
def sum(array: Array[Int]): Int = {
var res = 0
for (elem <- array) {
// forEach 循环
res += elem
}
return res
}
}