一。思维导图
二。案例
案例1.
分别使用val和var定义一个变量name
使用val同时声明多个变量。
操作步骤:
(1)打开Windows命令控制台,输入scala并按【Enter】键,进入Scala的解释器。
(2)使用val定义一个变量name。输入val name="scala"并按【Enter】键,可以看到变量定义成功,并且成功推断出其变量类型为String,如下所示(⚠️标点符号需使用英文)
scala>val name="scala"
name: String = scala
scala>
(3)修改上一步定义的变量name的值。输入 name="java"并按【Enter】键,结果提示报错,原因就是用val声明的变量值不能进行修改,如下所示(⚠️标点符号需使用英文)
scala> name= "java"
<console>:12:error:reassignment to val
name= "java"
(提示报错)
(4)要想修改变量值,可以使用var定义变量name。使用var重新定义变量name。输入var name="scala"并按【Enter】键,可以看到变量已定义成功,接着输入name="java"并按【Enter】键,可以看到变量值已被成功修改,如下所示。
scala> var name="scala"
name:String = scala
scala>name="java"
name:String = java
scala>
(使用var定义变量name并修改变量值)
⚠️注意:其实Scala中使用val声明的变量不可重赋值这一点,就相当于Java中用final关键字修饰的变量,因为经过final修饰的变量值同样不可被改变。
(5)使用val同时声明多个变量。输入val a,b=3并按【Enter】键,可以看到成功声明了两个整变量a、b并均赋值为3,如下所示。
scala> val a, b=3
a: Int =3
b:Int = 3
(用val同时声明多个变量)
(6)使用var同时声明多个变量。输入var x,y="scala"并按【Enter】键,可以看到成功声明了个字符串型变量x、y并均赋值为scala,如下所示。
scala> var x, y="scala"
x:String = scala
y:String = scala
(用var同时声明多个变量)
(7)修改变量值的类型,使其与声明变量时指定的类型不同。输入 var name="scala"并按【Enter】键,声明一个字符串类型的变量name,接着输入name=2并按【Enter】键,结果提示类型不匹配,如下所示,这里出错的原因就在于重新赋予的变量值类型(2是整型值)与声明变量时指定的类型(字符串型)不一致。
scala> var name="scala"
name:String = scala
scala >name=2
<console>:12:error:type mismatch;
found :Int (2)
required:String
name=2
(结果报错)
⚠️ 注意:由于Scala是一种强类型的语言,因此在声明变量时指定的数据类型与所赋值的数据类型一定要匹配,否则就会报错。
案例2.
演示Scala的lazy变量的惰性求值。
操作步骤:
(1)打开 Windows命令控制台,输入scala并按【Enter】键,进入Scala解释器。
(2)用val声明一个变量并赋值。输入val name="shf"并按【Enter】键,可以看到值shf马上就赋给了变量name,如下所示。
scala> val name="shf"
name: String = shf
(声明变量并赋值)
(3)重复上一步的操作,但是这次使用lazy修饰变量。输入lazy val name="scala”并按【Enter】键,可以看到值scala并没有马上赋给变量name,而是显示<lazy>,如下所示。
scala> lazy val name="scala"
hame:String =<lazy>
(使用lazy修饰变量的结果)
(4)用lazy修饰的变量,只有在使用时才会被真正赋值,此处调用一下name。输入name并按【Enter】键,可以看到值scala已赋给变量,如下所示。
scala> name
res7:String= scala
(值scala已赋给变量)
(5)用var声明的变量能否用lazy修饰。输入lazy var name="df"并按【Enter】键,结果报错,提示lazy不可与var合用,只能用来修饰用val声明的变量,如下所示。
scala> lazy var name="df"
<console>:1: error: lazy not allowed here. Only vals can be lazy
lazy var name="df"
(结果报错)
——这就是一个惰性求值的简单案例。所谓惰性求值,其实就是说在声明变量时,并不会给变量分配内存空间,只有在使用变量时才会分配。
标签:变量,val,scala,基础,name,Enter,var,入门 From: https://blog.csdn.net/2401_82393217/article/details/141828770