Scala深入学习之变量学习

简介: 笔记

一、变量定义


基本语法:

var|val 变量名 [:变量类型] = 变量值

使用var或val定义一个变量

使用var声明变量-可以被重新赋值。

// 声明变量i1,手动指定类型为Int,此时需要保证所赋值类型匹配
var i1:Int = 1
// var修饰的变量之间可以相互赋值,并可以使用var重新定义
scala> i1 = 2
i1: Int = 2

使用val声明常量-引用不可变,val修饰的变量,相当于Java中final修饰的变量

// 定义常量s1,使用字符串“1”赋值,自动推断为String类型,值不可变
scala> val s1 = "1"
s1: String = 1
scala> s1 = "123"
<console>:12: error: reassignment to val
       s1 = "123"
          ^
// 定义常量s2,手动指定类型为String,此时需要保证所赋值类型匹配
scala> val s2:String = "2"
s2: String = 2
// 使用val定义基本数据类型时,值不可变,可以使用val重新定义
scala> val s2 = "ee"
s2: String = ee
// 可以同时定义多个变量
scala> var a1,a2 = 100
a1: Int = 100
a2: Int = 100
// 也可以给每个变量赋值不同的值
scala> var (a,b,c) = (1,0.3,"abc")
a: Int = 1
b: Double = 0.3
c: String = abc


二、var和val的区别


val修饰的变量,如果是基本数据类型,不能重新赋值,如果是引用类型,引用类型的地址(变量的值)不能修改,但是变量的内容是可以修改的


var修饰的变量,如果是基本数据类型,可以重新赋值,如果是引用类型,引用类型的地址(变量的值)能修改,但是变量的内容是可以修改的


例子:

// var修饰的变量是基本数据类型
scala> var a = 10
a: Int = 10
scala> a = 100
a: Int = 100
// val修饰的变量是基本数据类型
scala> val aa = 10
aa: Int = 10
scala> aa = 100
<console>:12: error: reassignment to val
       aa = 100
          ^
// var修饰的变量是引用类型
scala> var arr1 = Array(1,2,3,4)
arr1: Array[Int] = Array(1, 2, 3, 4)
scala> arr1 = Array(1,2,3,4,5,6)
arr1: Array[Int] = [I@34fb399b
scala> arr1
res7: Array[Int] = Array(1, 2, 3, 4, 5, 6)
scala> arr1(0) = 100
scala> arr1
res13: Array[Int] = Array(100, 2, 3, 4, 5, 6)
// val修饰的变量是引用类型
scala> val arr2 = Array(1,2,3,4)
arr2: Array[Int] = Array(1, 2, 3, 4)
scala> arr2 = Array(1,2,3,4,5,6)
<console>:12: error: reassignment to val
       arr2 = Array(1,2,3,4,5,6)
            ^
scala> arr2
res10: Array[Int] = Array(1, 2, 3, 4)
scala> arr2(0)=12
scala> arr2
res12: Array[Int] = Array(12, 2, 3, 4)


三、变量总结


var|val 变量名 [:变量类型] = 变量值

定义变量的时候一定要初始化

val修饰的变量,如果是基本数据类型,不能重新赋值,如果是引用类型,引用类型的地址(变量的值)不能修改,但是变量的内容是可以修改的

var修饰的变量,如果是基本数据类型,可以重新赋值,如果是引用类型,引用类型的地址(变量的值)能修改,但是变量的内容是可以修改的

优先使用val修饰的变量:(1)代码可读性高(2)更快的被回收(3)适合并发编程(4)可以使用lazy修饰

编译器具有类型推断功能


相关文章
|
2月前
|
分布式计算 大数据 Java
大数据-87 Spark 集群 案例学习 Spark Scala 案例 手写计算圆周率、计算共同好友
大数据-87 Spark 集群 案例学习 Spark Scala 案例 手写计算圆周率、计算共同好友
51 5
|
2月前
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
50 3
|
7月前
|
IDE Java 编译器
scala的两种变量类型 var 和 val
scala的两种变量类型 var 和 val
148 2
scala的两种变量类型 var 和 val
|
7月前
|
Scala 容器
Scala学习--day04--集合、常用方法、案例实操 - WordCount TopN、不同省份的商品点击排行
Scala学习--day04--集合、常用方法、案例实操 - WordCount TopN、不同省份的商品点击排行
108 2
|
7月前
|
消息中间件 分布式计算 大数据
Scala学习--day03--函数式编程
Scala学习--day03--函数式编程
102 2
|
7月前
|
Java Scala
Scala学习--day02---控制流、“九层妖塔—杨辉三角”
Scala学习--day02---控制流、“九层妖塔—杨辉三角”
194 1
|
7月前
|
Java 编译器 API
Scala学习--day01变量与数据类型、运算符
Scala学习--day01变量与数据类型、运算符
|
7月前
|
存储 Scala
Scala变量和数据类型
Scala变量和数据类型
50 1
|
7月前
|
Java Shell API
Scala入门【变量和数据类型】
Scala入门【变量和数据类型】