目录

声明变量

语法格式

在解释器中定义一个变量

val和var变量

使用类型推断来定义变量

惰性赋值


声明变量

我们将来每一天编写scala程序都会定义变量。那scala语言如何定义变量呢?

语法格式

Java变量定义

int a = 0;

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

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

其中

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

[!NOTE]

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

在解释器中定义一个变量

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

步骤

打开scala解释器

定义一个字符串类型的变量用来保存名字

参考代码

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

val和var变量

示例

给名字变量进行重新赋值为Jim,观察其运行结果

参考代码

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

示例

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

参考代码

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

[!TIP]

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

使用类型推断来定义变量

Scala的语法要比Java简洁,我们可以使用一种更简洁的方式来定义变量。

示例

使用更简洁的语法定义一个变量保存一个人的名字"tom"

参考代码

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

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

 惰性赋值

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

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

语法格式:

lazy val/var 变量名 = 表达式

示例

在程序中需要执行一条以下复杂的SQL语句,我们希望只有用到这个SQL语句才加载它。

"""insert overwrite table adm.itcast_adm_personasselecta.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_cntfrom gdm.itcast_gdm_user_basic aleft join gdm.itcast_gdm_user_consume_order b on a.user_id=b.user_idleft join gdm.itcast_gdm_user_buy_category c on a.user_id=c.user_idleft join gdm.itcast_gdm_user_visit d on a.user_id=d.user_id;"""

参考代码

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>

2021年大数据常用语言Scala(四):基础语法学习 声明变量相关推荐

  1. 2021年大数据常用语言Scala(十四):基础语法学习 数组  重点掌握

    目录 数组  重点掌握 定长数组 变长数组 遍历数组 数组常用算法 数组  重点掌握 scala中数组的概念是和Java类似,可以用数组来存放一组数据.scala中,有两种数组,一种是定长数组,另一种 ...

  2. 2021年大数据常用语言Scala(三十一):scala面向对象 特质(trait)

    目录 特质(trait) 作为接口使用 定义具体的方法 定义具体方法和抽象方法 定义具体的字段和抽象的字段 实例对象混入trait trait调用链 trait的构造机制 trait继承class 特 ...

  3. 2021年大数据常用语言Scala(一):Scala简介

    目录 一.Scala简介 为什么使用scala Scala对比Java 案例 一.Scala简介 scala是运行在JVM上的多范式编程语言,同时支持面向对象和面向函数编程 多范式:就是包含多种编程思 ...

  4. 2021年大数据常用语言Scala(十三):基础语法学习 函数 重点掌握

    目录 函数 重点掌握 定义函数 方法和函数的区别 方法转换为函数 完全体函数 函数 重点掌握 scala支持函数式编程,将来编写Spark/Flink程序中,会大量使用到函数 函数和我们的对象一样, ...

  5. 2021年大数据常用语言Scala(五):基础语法学习 字符串

    字符串 scala提供多种定义字符串的方式,将来我们可以根据需要来选择最方便的定义方式. 使用双引号 使用插值表达式 使用三引号 使用双引号 语法 val/var 变量名 = "字符串&qu ...

  6. 2021年大数据常用语言Scala(三十四):scala高级用法 异常处理

    目录 异常处理 捕获异常 抛出异常 异常处理 Scala中 无需在方法上声明异常 来看看下面一段代码. def main(args: Array[String]): Unit = {val i = 1 ...

  7. 2021年大数据常用语言Scala(二十四):函数式编程 过滤  filter

    目录 过滤  filter 定义 方法签名 方法解析 案例 参考代码 过滤  filter 过滤符合一定条件的元素 定义 方法签名 def filter(p: (A) ⇒ Boolean): Trav ...

  8. 2021年大数据常用语言Scala(十六):基础语法学习 列表 List 重点掌握

    目录 列表 List 重点掌握 不可变列表定义 可变列表 列表常用操作 列表 List 重点掌握 列表是scala中最重要的.也是最常用的数据结构.List具备以下性质: 可以保存重复的值 有先后顺序 ...

  9. 2021年大数据常用语言Scala(三十八):scala高级用法 隐式转换和隐式参数

    目录 隐式转换和隐式参数 隐式转换 自动导入隐式转换方法 隐式转换的时机 隐式参数 隐式转换和隐式参数 隐式转换和隐式参数是scala非常有特色的功能,也是Java等其他编程语言没有的功能.我们可以很 ...

最新文章

  1. 跨网段实现内网互通_【供暖站组网】冠航SD-LAN助力河北石家庄市30个供暖站异地组网实现内网互联互通...
  2. abap 给用户分配事物代码权限_【第五篇】SAP ABAP7.50 之用户接口
  3. 技术干货 | 阿里云数据库PostgreSQL 13大版本揭秘
  4. 无线网络拓扑结构简析
  5. 2018年下半年《软件评测师》下午试卷及答案
  6. SAP编程中最基本的概念
  7. C#5 复习总结循环 迭代和穷举
  8. 聪聪用计算机计算235乘49,四年级数学题库
  9. 序列化和反序列化(json和pickle)day18
  10. android中所有颜色大全
  11. 算法和数据结构---排序---插入排序
  12. 信息系统项目管理师学习笔记
  13. 第一章、银行会计的基本原理和基本核算方法
  14. jacob转pdf linux,Java 使用jacob实现doc转pdf(附带其他方法分析)
  15. Proxmox VE 配置桌面虚拟化
  16. 不带脏字的英文骂人法
  17. xpwifi热点设置android,笔记本xp系统wifi热点设置教程(图文)
  18. LaTeX论文图片排版
  19. ViewPager系列之ViewPager无限循环滑动
  20. Python地球科学领域应用:python处理遥感数据、站点数据、遥感水文数据、气候变化数据、WRF模式数据后处理、运行生态模型

热门文章

  1. mysql并发更新数据,多用户并发修改数据解决方案。
  2. 如果你没用过maven的install,你应该了解一下!maven中的install功能及用法。
  3. Go语言的错误异常处理机制及其应用
  4. 2022-2028年中国马铃薯市场研究及前瞻分析报告
  5. 【转载】首次作品展小结
  6. 零基础入门--中文命名实体识别(BiLSTM+CRF模型,含代码)
  7. LeetCode简单题之石头与宝石
  8. linux ftp随机端口,linuxFTP生产环境配置
  9. python 16进制转10进制, 8进制转10进制, 2进制转10进制的方法
  10. python 读取excel 内的中文显示为unicode 编码