Scala变量

1.scala中的变量种类

scala中变量有两种,分别是 val 变量 和 var变量

语法格式

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

val 变量

不能进行二次赋值
如果重新进行赋值会报错

在这里插入图片描述

代码示例
val name:String:name
name = "jim"

var 变量

可以进行二次赋值

代码示例
var name:String:name
name = "jim"

在这里插入图片描述

强调

1.scala可以自动根据变量的值来自动推断变量的类型,这样编写代码更加简洁。
在这里插入图片描述

代码示例
scala> val name = "tom"
name: String = tom

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

2.惰性赋值

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

解决

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

语法格式

lazy val/var 变量名 = 表达式

说明

使用lazy 之后是不会直接把变量加载到 内存中,只有当使用时才会加载到内存中

代码示例

lazy val sql= """insert overwrite table adm.itcast_adm_personas
    select
    a.user_id,
    a.user_name,
    a.user_sex,
    a.user_birthday,
    a.user_age,
    a.constellation,
    a.province,
    a.city,
    a.city_level,
    a.hex_mail,
    a.op_mail,
    a.hex_phone,
    a.fore_phone,
    a.figure_model,
    a.stature_model,
    b.first_order_time,
    b.last_order_time,
      ...
    d.month1_hour025_cnt,
    d.month1_hour627_cnt,
    d.month1_hour829_cnt,
    d.month1_hour10212_cnt,
    d.month1_hour13214_cnt,
    d.month1_hour15217_cnt,
    d.month1_hour18219_cnt,
    d.month1_hour20221_cnt,
    d.month1_hour22223_cnt
    from gdm.itcast_gdm_user_basic a
      left join gdm.itcast_gdm_user_consume_order b on a.user_id=b.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;"""

在这里插入图片描述

发布了92 篇原创文章 · 获赞 114 · 访问量 3162
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 书香水墨 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览