scala(3)-scala的解释器和变量

scala(2)-scala的变量和字符串

Scala程序和Java程序对比

程序的执行流程对比

Java程序编译执行流程

image-20200919095641722

Scala程序编译执行流程

image-20200919095714519

scala程序运行需要依赖于Java类库,必须要有Java运行环境,scala才能正确执行

上图2者的区别,下图是Scalac编译,且多了一个Scala类库。

根据上述流程图,要编译运行scala程序,需要

  • jdk(jvm)

  • scala编译器(scala SDK)

scala解释器

我们会使用scala解释器来学习scala基本语法,scala解释器像Linux命令一样,执行一条代码,马上就可以让我们看到执行结果,用来测试比较方便。

  • 启动scala解释器

  • 在scala解释器中执行scala代码

  • 退出scala解释器

启动scala解释器

要启动scala解释器,只需要以下几步:

  • 按住windows键 + r

  • 输入scala即可

执行scala代码

在scala的命令提示窗口中输入println(“hello, world”),回车执行

image-20200919100818896

退出解释器

在scala命令提示窗口中执行quit,即可退出解释器

声明变量

语法格式

在scala中,可以使用val或者var来定义变量,语法格式如下:

val/var 变量标识:变量类型 = 初始值
  • val定义的是不可重新赋值的变量

  • var定义的是可重新赋值的变量

注意事项:

  • scala中定义变量类型写在变量名后面
  • scala的语句最后不需要添加分号

val和var变量

示例1:

使用val定义变量来保存名字"tom",并尝试重新赋值为Jim

scala> val name:String = "tom"
name: String = tom
scala> name = "Jim"
<console>:12: error: reassignment to val
       name = "Jim"

示例2:

使用var重新定义变量来保存名字"tom",并尝试重新赋值为Jim,观察其运行结果

scala> var name:String = "tom"
name: String = tom
scala> name = "Jim"
name: String = Jim

优先使用val定义变量,如果变量需要被重新赋值,才使用var

使用类型推断来定义变量

scala可以自动根据变量的值来自动推断变量的类型,这样编写代码更加简洁。

scala> val name = "tom"
name: String = tom

惰性赋值

在企业的大数据开发中,有时候会编写非常复杂的SQL语句,这些SQL语句可能有几百行甚至上千行。

这些SQL语句,如果直接加载到JVM中,会有很大的内存开销。如何解决?

当有一些变量保存的数据较大时,但是不需要马上加载到JVM内存。可以使用惰性赋值来提高效率。

注意:只有val类型变量才行,而var不可以

语法格式:

lazy val 变量名 = 表达式

示例:

字符串

scala提供多种定义字符串的方式,将来我们可以根据需要来选择最方便的定义方式。

  • 使用双引号

  • 使用插值表达式

  • 使用三引号

使用双引号

语法:

val/var 变量名 = “字符串”

示例

scala> val name = "zhangsan"
name: String = zhangsan
scala> println(name + name.length)
zhangsan8

使用插值表达式

scala中,可以使用插值表达式来定义字符串,有效避免大量字符串的拼接。

语法:

val/var 变量名 = s"${变量/表达式}字符串"
  • 在定义字符串之前添加s

  • 在字符串中,可以使用${}来引用变量或者编写表达式

示例

scala> val name = "zhangsan"
name: String = zhangsan

scala> val age = 30
age: Int = 30

scala> val sex = "male"
sex: String = male

scala> val info = s"name=${name}, age=${age}, sex=${sex}"
info: String = name=zhangsan, age=30, sex=male

scala> println(info)
name=zhangsan, age=30, sex=male

使用三引号

如果有大段的文本需要保存,就可以使用三引号来定义字符串。例如:保存一大段的SQL语句。三个引号中间的所有字符串都将作为字符串的值。

语法

val/var 变量名 = val/var 变量名 = """字符串1 .... 字符串2"""

示例:

scala> var sql = """select
     |     *
     | from
     |     t_user
     | where
     |     name = "zhangsan"
     | """
scala> println(sql)

ar 变量名 = “”“字符串1 … 字符串2"”"

示例:

scala> var sql = """select
     |     *
     | from
     |     t_user
     | where
     |     name = "zhangsan"
     | """
scala> println(sql)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值