Scala学习 一(变量、数据类型、操作符和表达式)

Scala特点

面向对象编程
面向函数式编程
静态类型语言
动态类型语言python(变量a的数据类型:运行阶段确定)和静态类型语言java.scala(变量a的数据类型:编译阶段确定的)
基于JVM(aa.scala->aa.class(java))->JVM
为什么要学
(1) 速度快
(2) 优雅
(3) 融入大数据生态圈,为了深入学习spark,scala语言
(4) Kafka也是用scala语言实现的
##Scala定义变量

Var 变量名 = 初始化值
Var 变量名:数据类型 = 初始化值

注意:
(1) 定义变量的时候需要初始化
(2) 定义变量的时候可以不指定变量的数据类型,系统会根据变
量的初始化值推断变量的数据类型

Var a =1

Scala定义常量

Var 常量名 = 初始化值
Var 常量名:数据类型 = 初始化值

注意:
(1) val修饰的变量,相当于java中的final修饰的变量
(2) val修饰的变量,变量的类型是基本数据类型也就是值类型(相当于java的基本数据类型,Int Double Boolean),它的值是不可以修改的

val a = 10
a = 100//不可以

val修饰的变量,变量的类型是引用类型,引用不可变,引用的内容可变

val a1 = Array(1,2,3)
val a2 = Array(4,5,6)
a1 = a2//不可以的,引用不变
a1(1) = 10 //可以的,引用的内容可变

val修饰的变量,还可以用lazy修饰(var不能用),值是在需要使用的时候赋值
图片.png
##val ?var
在能使用val的时候,尽量使用val

数据类型

(1)值类型(java中的基本数据类型)和引用类型
(2)值类型是类类型,没有基本数据类型和包装类之分

scala> 1 to 10
res5: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

scala> 1.to(10)
res6: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
在这里1是int类的对象,可以调用to方法

图片.png
这里AnyVal是值类型,AnyRef是引用类型,Unit与void很像
##操作符
数学运算符:+ - * / %
关系运算符:> >= < <= !
逻辑运算符:&& ||
位运算符:& |^
比较对象:== !=
(1)scala中的运算符都是方法的重载,是方法的调用
(2)scala中没有++ --运算符,可以用+= -=

scala> 1+1
res7: Int = 2

scala> 1.+(2)
res8: Int = 3

scala> a +=1
scala> a
res11: Int = 11

表达式

就是一个语句块,包含一个或者多条语句
特点:
(1)表达式是有返回值的
(2)返回值是表达式中最后一条语句的执行结果
###条件表达式
含有if else的语句块

scala> val res = if(a>0) 100 else -100
res: Int = 100

scala> val res = if(a>0) "cch" else -100
res: Any = cch

scala> val res = if(a>0) 100
res: AnyVal = 100

scala> val res = if(a<0) 100
res: AnyVal = ()

scala> val res = if(a>0) 100 else if(a>l0)-100 else 0
<console>:12: error: not found: value l0
       val res = if(a>0) 100 else if(a>l0)-100 else 0
                                       ^

scala> val a = 100
a: Int = 100

scala> val res = if(a>0) 100 else if(a>l0)-100 else 0
<console>:12: error: not found: value l0
       val res = if(a>0) 100 else if(a>l0)-100 else 0
                                       ^

scala> val res = if(a>0) 100 else if(a>l0) -100 else 0
<console>:12: error: not found: value l0
       val res = if(a>0) 100 else if(a>l0) -100 else 0
                                       ^

scala> val res = if(a>0) 100 else if(a<0) -100 else 0
res: Int = 100

块表达式

scala> val res ={val a = 10
     | val b = 10
     | a+b}
res: Int = 20

scala> val res = {val a = 10
     | val b = 20}
scala> print(res)
()
scala> val res = {print("aaa")}
aaa
scala> print(res)
()

循环

for:

for(i <- 表达式、数组、集合)

图片.png
嵌套循环非常简单,在一个for循环里写i的取值范围,并包括j的取值范围和内循环的判断语句。
图片.png
for循环推导
目的:对a集合中的每一个数乘以10得到新集合,我所做的是利用推导公式,用原来的集合每一个元素做运算,放到一个新的集合里去,最后产生了一个新集合。
图片.png

while

while(条件语句){表达式}

do while

do{表达式}while(条件语句)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值