Scala>scala声明变量

语法格式

Java变量定义

int a = 0;

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

val/var 变量标识:变量类型 = 初始值

其中

  • val定义的是不可重新赋值的变量
  • var定义的是可重新赋值的变量
  • scala中定义变量类型写在变量名后面
  • scala的语句最后不需要添加分号

定义一个变量

示例:定义一个变量保存一个人的名字"tom"
参考代码

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

val和var变量

示例
给名字变量进行重新赋值为Jim,观察其运行结果
参考代码

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

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

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

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

结论:赋值时 val不可变; var:可变;(优先使用val)


类型推断定义变量

scala的语法要比Java简洁,我们可以使用一种更简洁的方式来定义变量。
示例
使用更简洁的语法定义一个变量保存一个人的名字"tom"
参考代码

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

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


惰性赋值

在企业的大数据开发中,有时候会编写非常复杂的SQL语句,这些SQL语句可能有几百行甚至上千行。这些SQL语句,如果直接加载到JVM中,会有很大的内存开销。如何解决?

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

  • 语法格式:
lazy val  变量名 = 表达式

参考代码

scala> lazy val sql = """insert overwrite table adm.itcast_adm_personas
    |     select
    |     a.user_id,
....
    |     left join gdm.itcast_gdm_user_buy_category c on a.user_id=c.user_id
    |     left join gdm.itcast_gdm_user_visit d on a.user_id=d.user_id;"""
sql: String = <lazy>
发布了166 篇原创文章 · 获赞 29 · 访问量 3537

猜你喜欢

转载自blog.csdn.net/qq_44509920/article/details/105337037