当前位置: 首页 > news >正文

Scala的变量声明

文章目录

  • 变量声明
    • (一)简单说明
    • (二)利用val声明变量
      • 1,声明方式
      • 2,案例演示
    • (三)利用var声明变量
      • 1,声明方式
      • 2,案例演示
    • (四)换行输入语句(续行)
    • (五)同时声明多个变量
    • (六)总结变量的声明
      • 1,变量必须初始化
      • 2,定义变量可以不指定数据类型
      • 3,鼓励优先使用val(常量)
      • 4,语句不需要写结束符


变量声明

在这里插入图片描述

(一)简单说明

  • Scala中变量的声明使用关键字val和var。val类似Java中的final变量,也就是常量,一旦初始化将不可修改;var类似Java中的非final变量,可以被多次赋值,多次修改。
  • val - value - 值
  • var - variable - 变量

(二)利用val声明变量

1,声明方式

  • val <变量名>[: 数据类型] = 变量值
  • 定义变量比较灵活,可以指定数据类型,也可以不指定数据类型,由Scala根据赋的值自行判断数据类型
  • 在声明变量上,Scala兼具Java和Python的特点。Java是静态语言,声明变量必须指定数据类型,Python是动态语言,声明变量不需要指定数据类型。

2,案例演示

  • 声明一个val字符串变量name,其实定义的是一个常量
    在这里插入图片描述

  • 上述代码中的第二行为执行第一行的输出信息,从输出信息中可以看出,该变量类型由Scala自动推断为String。

  • 当然也可以在声明变量时指定数据类型,与Java不同的是,数据类型需要放到变量名的后面,这使得面对复杂的数据类型时更易阅读。
    在这里插入图片描述

  • 由于val声明的变量是不可修改的,若对声明的变量name进行修改,则会报错
    在这里插入图片描述

  • 因此,如果希望变量可以被修改(can be mutated),就需要使用var声明。

(三)利用var声明变量

1,声明方式

  • var <变量名>[: 数据类型] = 变量值

2,案例演示

  • 声明一个var字符串变量message,然后利用print函数输出其值
    在这里插入图片描述
  • 对var变量message重新赋值,再输出其值
    在这里插入图片描述

(四)换行输入语句(续行)

  • 如果需要换行输入语句,那么只需要在换行的地方按回车键,解析器会自动在下一行以竖线进行分割
    在这里插入图片描述
  • 如果要输入多行字符串,得使用三引号
    在这里插入图片描述
  • 去掉多行字符串的前导空格
    在这里插入图片描述
  • 用双引号是无法实现多行字符串
    在这里插入图片描述

(五)同时声明多个变量

  • Scala还可以将多个变量放在一起进行声明,将一个数值同时赋给多个变量
    在这里插入图片描述
  • Scala不能一次对多个变量赋不同的值
    在这里插入图片描述

(六)总结变量的声明

1,变量必须初始化

  • 定义变量需要初始化,否则会报错。
  • 注意:Java里可以先声明变量,然后再赋值

2,定义变量可以不指定数据类型

  • 定义变量时可以不指定数据类型,系统会根据初始化值自动推断变量的类型。
  • 注意:Java声明变量必须指定类型

3,鼓励优先使用val(常量)

  • Scala中鼓励优先使用val(常量),除非确实需要对其进行修改,才使用var(变量)。

4,语句不需要写结束符

  • Scala语句不需要写结束符,除非同一行代码使用多条语句时才需要使用分号隔开。
http://www.lryc.cn/news/16319.html

相关文章:

  • 面试了字节、美团、腾讯等30几家公司后,才知道软件测试面试全是这个套路......
  • Anaconda环境配置
  • Markdown编辑器使用方法
  • “双碳”目标下二氧化碳地质封存技术应用前景及模型构建实践方法与讨论
  • 算法笔记(十二)—— Manacher算法(回文子串)
  • 【数据结构】顺序表和链表的区别和联系(详解)
  • 【Linux操作系统】【综合实验三 用户帐号、文件系统与系统安全管理】【更新中】
  • 华为OD机试真题 用 C++ 实现 - 整数分解 | 多看题,提高通过率
  • Java集合(一)---List和set
  • 手撸一个Table组件(Table组件不过如此)
  • Python|Leetcode刷题日寄Part01
  • 微信小程序更改头像昵称
  • Linux 基础知识之文件系统
  • LeetCode 36. 有效的数独
  • 2023-02-22 cascades-columbia-核心处理记录
  • 华为分布式存储(FusionStorage)
  • 说说 React 中 fiber、DOM、ReactElement、实例对象之间的引用关系
  • LaTex公式使用(Word中的公式编辑,尤其是方程组等联合公式)
  • S5P6818_系统篇(2)源码编译及烧录
  • LDPC码的编译码原理简述
  • 网络安全——数链路层据安全协议
  • spring的启动过程(一) :IOC容器的启动过程
  • 这次,我的CentOS又ping不通www.baidu.com了(gateway配置)
  • 启智社区“我为开源狂”第六期活动小白教程之基础活跃榜
  • 华为OD机试 - 区块链文件转储系统(Python)【2023-Q1 新题】
  • 【字节面试】Fail-fast知识点相关知识点
  • git应用笔记(三)
  • 有序表的应用:设计一个增、删、查数据的时间复杂度均为O(logN)的结构
  • 离线环境拷贝迁移 conda envs 环境(蛮力方法,3行命令)
  • 【数据结构与算法】字符串1:反转字符串I 反转字符串II 反转字符串里的单词 剑指offer(替换空格、左旋转字符串)